See*_*hor 3 c conditional ternary-operator operator-keyword
我只是对条件运算符有一个快速的问题.这里还是一个崭露头角的程序员.给出x = 1,y = 2,z = 3.
我想知道,为什么在这个声明之后:
y += x-- ? z++ : --z;
Run Code Online (Sandbox Code Playgroud)
y是5.语句后面的值是x = 0,y = 5,z = 4.我知道条件运算符的工作方式是它的格式如下:variable = condition?值为true:如果为false则为value.
对于条件,y + = x--,y如何变为5?我只能看到2(2 + = 0)和3(2 + = 1)(然后x--变为零)作为可能性.任何帮助深表感谢.:)
运算符?:具有比运算符+ =更高的优先级.所以你的表达式被评估为
y += (x-- ? z++ : --z);
Run Code Online (Sandbox Code Playgroud)
x-- ? z++ : --z表达式的值是表达式的值z++(即3),因为表达式的x--值为1
把它分解成类似的if声明:
if (x--)
y += z++;
else
y += --z;
Run Code Online (Sandbox Code Playgroud)
在你的情况,因为x就是1,你会利用这个if语句的"真实"的一面.这意味着你要添加z++到y,给3 + 2,导致5.
请不要写这样的代码.
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |