注册 登录
编程论坛 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
pangding2012-02-23 23:02
1?1:0?2:0?3:0 =>
    1
? 1
: (0 ? 2 : (0?3:0))
因为 1 为真,选 ? 后的那项,所以是 1。

a=(b,c)
后面是逗号表达式,选最后一个逗号之后的。赋值表达式本身的值是变量被赋予的值。
#3
小鱼儿c2012-02-24 01:14
呵呵 现在才知道3木运算是右到左。
用的很少
#4
z8269264842012-02-24 15:29
回复 2楼 pangding
好厉害啊 看来我还是要努力。
#5
CooperOne2012-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
pangding2012-03-01 00:52
哦。现在我自己看也觉得当时写的有点没头脑……

不过好多人用相对复杂一点的 ?:表达式 时,都是分三行写。
我当时只是把它拆成三行,加了点不影响结合顺序的括号而已。
#7
luf5432012-03-02 16:58
楼主把输出结果写错了是1和C,不是c。
1