VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 623|回复: 4

[求助] 连续的条件运算符(? :)表示什么意思?

[复制链接]
36_avatar_middle
在线会员 发表于 2018-3-6 17:49:41 | 显示全部楼层 |阅读模式
3驿站币
我知道条件运算符(a? b:c)表示
如果a正确,则整个表达式的值为b,否则为c;
那么连续的条件运算符表示什么意思?

例如:

const char x[2][20]={"jason", "at your service\n"};
const char* y="quillstone";
for(int i=0;i<3;i++)
     cout<<(i<2 ? !i ? x[i]:y:x[1]);

打印语句顺序:jason   quillstone   at your service
最后一句语句到底什么意思,我搞不清楚了
有谁能帮我说明一下

最佳答案

查看完整内容

可以给 cout




上一篇:picture control改变图片问题
下一篇:操作系统自动安装驱动是什么原理?
51_avatar_middle
online_admins 发表于 2018-3-6 17:49:42 | 显示全部楼层
可以给 cout << (i < 2 ? !i ? x[i] : y : x[1]); 内部加个括号,就能更明朗一些了,如下:
cout << (i < 2 ? (!i ? x[i] : y) : x[1]);

进入 for 循环:
第1次:i = 0,0 < 2 成立,所以 cout 输出的结果是 (!i ? x[i] : y),因为 i = 0,所以 !i 就是非0,也就是真,所以输出的是 x[i] 的值,i = 0,所以 x[i] 就是 x[0] 也就是 "jason";

第2次:i = 1, 1 < 2 成立,所以 cout 输出的结果是 (!i ? x[i] : y),因为 i = 1,所以 !i 就是0,也就是假,所以输出的是 y 的值,也就是 "quillstone";

第3次:i = 2,2 < 2 不成立,所以 cout 输出的结果是 x[1],也就是 "at your service\n";

这么详细的分析,楼主应该明白了吧?
51_avatar_middle
在线会员 发表于 2018-3-6 18:56:52 | 显示全部楼层
  1. a ? b : c简单理解方式为:
  2. if(a) {
  3.     return b;
  4. } else {
  5.     return c;
  6. }
复制代码

点评

谢谢  发表于 2018-3-6 19:26
36_avatar_middle
ico_lz  楼主| 发表于 2018-3-6 19:25:59 | 显示全部楼层

非常详细清楚,我明白了,非常感谢
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-22 08:08

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表