求下面代码打印结果
#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),打印结果为 > 。

本文详细解析了一段C语言代码,该代码涉及有符号数和无符号数的比较。全局变量a未初始化,默认为0,然后自减变为-1。通过比较a与sizeof(a)的大小,展示了在有符号数与无符号数相比较时的转换规则,以及在补码表示下的数值转换。最终得出代码的打印结果为'>'。

7981

被折叠的 条评论
为什么被折叠?



