1、来看一串代码你能算出结果吗?
#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
提示一下
全局变量int类型的和用静态static修饰的变量,如果没初始化默认为零
局部变量未初始化值默认值未知
sizeof()是也给操作符,返回一个变量或一个类型,占几个字节
分析完毕 i = -1, sizeof(i) = 4;
i应该小于sizeof(i)打印<\n才对
但没这么简单因为suzeof()返回类型为unsigned int 无符号整形
-1 和 无符号整形比较计算会把-1转换成一个无符号整形
-1转换成无符号整形在内存中为补码值为2的32次方-1这个整形最大的值
最后结果是打印>\n