整数作为C++中的条件":?" 操作者

And*_*lov 2 c++

所以,对于我的考试,我必须评估一些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.但之后我不能了解一个事情.条件运算符的条件在哪里?:因为我看不到任何东西?谢谢你的建议,帮我解决这个问题:)

sco*_*001 6

让我们更好地格式化:

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.