繁体   English   中英

thic C代码的输出是什么? 我需要解释

[英]What is the output of thic C code? I need explaination

int main() 
{
    char boolean[][6]={"TRUE","FALSE"};
    printf("%s",boolean[(unsigned int)-1 == ~0]);
}

执行后,我将其设为FALSE。 是什么原因?

因为

~0 == 0xffffffff  (the ~ operator inverts all bits)

(unsigned int)-1 == 0xffffffff

(0xffffffff == 0xffffffff) == 1

你的表情归结为

boolean[1]

导致

"FALSE"

这是一个心理把戏。

(unsigned int)-1 == ~0
0xffffffff == 0xffffffff
1

boolean[1]指向FALSE ,因此输出正确。

但是在您看来,条件会扩展为true那么为什么输出FALSE

答: boolean[]数组中元素的顺序是错误的,或者至少不是给出预期结果应该是的顺序。

这是沿着

#define TRUE 0
#define FALSE 1

然后想知道为什么C编译器会“忽略”真值和代码的“新规则”而突然变成错误的和令人费解的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM