【发布时间】:2018-09-28 05:42:00
【问题描述】:
我在下面的代码中注意到一个奇怪的行为。
#include<stdio.h>
#include <stdbool.h>
int main()
{
int x = sizeof(int) > -1;
bool z = sizeof(int);
printf("x is %d \t z is %d \n",x,z);
if(sizeof(int)>-1)
{
printf("true\n");
}
else
printf("false\n");
}
当 sizeof(int) > -1 为真且预期输出应为 1 时,为什么 int x 为零。
【问题讨论】:
-
因为
-1在转换为无符号类型时成为该类型可以容纳的最大值。您正在比较sizeof (int) > 65535 /* or something like 2 billion */。sizeof (int) > -1是 false。 -
@pmg 大概四十亿吧?
-
@unwind: 对,只失败了 1 位 :)