所以,对于我的考试,我必须评估一些C++表达式.这是表达式:
float x=3<<2>>1?4.:.5?6:7>8;
Run Code Online (Sandbox Code Playgroud)
有人可以用文字解释它,因为我无法理解它.所以,我必须将3转换为二进制并将其移位2位.但转换后结果为11.我可能会添加位符号,因此它变为011.并且在位符号之后我可以添加尽可能多的0,因此3 << 2-> 01100.但之后我不能了解一个事情.条件运算符的条件在哪里?:因为我看不到任何东西?谢谢你的建议,帮我解决这个问题:)
让我们更好地格式化:
float x = (3 << 2) >> 1 ? 4. :
.5 ? 6 :
(7 > 8);
Run Code Online (Sandbox Code Playgroud)
甚至更好:
float x;
if( 3<<2>>1 ) {
x = 4.;
} else if( .5 ) {
x = 6;
} else {
x = 7 > 8;
}
Run Code Online (Sandbox Code Playgroud)
通过评估3 << 2 >> 1:
(3 << 2) >> 1 =>
(b0011 << 2) >> 1 =>
b1100 >> 1 =>
b0110 =>
6
Run Code Online (Sandbox Code Playgroud)
由于6是非零值(true在C++中求值)x将具有该值4.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |