FavoriteRecipe
执行后,我认为它为假。是什么原因?
答案 0 :(得分:11)
因为
~0 == 0xffffffff (the ~ operator inverts all bits)
和
(unsigned int)-1 == 0xffffffff
as
(0xffffffff == 0xffffffff) == 1
你的表达归结为
boolean[1]
导致
"FALSE"
答案 1 :(得分:2)
这是一种精神伎俩。
(unsigned int)-1 == ~0
0xffffffff == 0xffffffff
1
和boolean[1]
指向FALSE
,因此输出正确。
但在您看来,条件会扩展为true
,那么为什么输出FALSE
?
答案:boolean[]
数组中元素的排序是错误的,或者至少不是给出预期结果的顺序。
这就是
#define TRUE 0
#define FALSE 1
然后想知道为什么C编译器"忽略" "新规则"因为真值和代码突然变得越来越麻烦和错综复杂。