求下面代码打印结果
#include<stdio.h>
int a;//全局变量 - 不初始化 - 默认为0
int main()
{
a--;
if (a > sizeof(a))
{
printf(">\n");
}
else
{
printf(">\n");
}
return 0;
}
思路解析
a为全局变量,不初始化,默认为0;
a--使得a = -1,为有符号数
-1 - 有符号数
10000000 00000000 00000000 00000001 - 原码
11111111 11111111 11111111 11111110 - 反码
11111111 11111111 11111111 11111111 - 补码
sizeof() - 计算变量\类型所占存的大小,恒>=0,为无符号数
有符号数与无符号数相比会被转为有符号数
11111111 11111111 11111111 11111111将表示一个很大的正数
所以,a > sizeof(a),打印结果为 > 。