编程论坛
注册
登录
编程论坛
→
C++教室
c++数据类型和表达式
z826926484
发布于 2012-02-23 21:26, 528 次点击
char a='A';
char b='B';
char c='C';
cout<<(1?1:0?2:0?3:0)<<endl;
cout<<(a=(b,c))<<endl;
为啥输出会是1和c啊 求具体解释啊
6 回复
#2
pangding
2012-02-23 23:02
1?1:0?2:0?3:0 =>
1
? 1
: (0 ? 2 : (0?3:0))
因为 1 为真,选 ? 后的那项,所以是 1。
a=(b,c)
后面是逗号表达式,选最后一个逗号之后的。赋值表达式本身的值是变量被赋予的值。
#3
小鱼儿c
2012-02-24 01:14
呵呵 现在才知道3木运算是右到左。
用的很少
#4
z826926484
2012-02-24 15:29
回复 2楼 pangding
好厉害啊 看来我还是要努力。
#5
CooperOne
2012-02-29 20:57
以下是引用
pangding
在2012-2-23 23:02:55的发言:
1?1:0?2:0?3:0 =>
1
? 1
: (0 ? 2 : (0?3:0))
因为 1 为真,选 ? 后的那项,所以是 1。
a=(b,c)
后面是逗号表达式,选最后一个逗号之后的。赋值表达式本身的值是变量被赋予的值。
+1.....弄得我愣了大半天
#6
pangding
2012-03-01 00:52
哦。现在我自己看也觉得当时写的有点没头脑……
不过好多人用相对复杂一点的 ?:表达式 时,都是分三行写。
我当时只是把它拆成三行,加了点不影响结合顺序的括号而已。
#7
luf543
2012-03-02 16:58
楼主把输出结果写错了是1和C,不是c。
1