int x = /* some integer */;
unsigned int ux = (unsigned) x;
我们有
x >= 0 || x < ux
我们知道在x < ux
中,第一个x
被隐式转换为unsigned
,但是x
(1)中的第一个x >= 0
被转换为{{ 1}}隐式?
答案 0 :(得分:4)
不。逐个操作符发生。
x >= 0 || x < ux
自然是
(x >= 0) || (x < ux)
由于x
和0
都是int
,因此不需要任何(usual arithmetic) conversions ...
即使x
在x < ux
中被转换为 unsigned ,表达式x < ux
的 value 仍为{ {1}}-int
或0
(就像左侧一样)。
答案 1 :(得分:1)
不,不是。
这是因为x> = 0是一个表达式。 (通常,0是int类型的八进制常量。)
请尝试1/2 * 1.0,以获得更有害的示例。分组为(1/2)* 1.0,并且为零,因为表达式1/2中的整数不提升为浮点数。
答案 2 :(得分:0)
否,Hour | X1 | X2 | X3 | X4
0 | 11 | 13 | 25 | 37
1 | 21 | 52 | 21 | 45
2 | 18 | 41 | 45 | 25
3 | 65 | 31 | 98 | 14
是0
,因此您表达的int
部分没有晋级。