|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
signed char a=-2;
printf("%u",sizeof a);
return 0;
}
这个输出值是1。
#include <stdio.h>
int main()
{
signed char a=-2;
printf("%u",sizeof -2);
return 0;
}
但是这个输出值是4。这是为什么呢?(这个是我在试验数据类型如果跟所输入的数字不匹配时会发生什么的时候发现的)求大佬解答,万分感谢。
本帖最后由 isdkz 于 2023-4-10 20:18 编辑
你好,
关于你提到的这两个程序的输出结果,我来为你解释一下原因。
在第一个程序中:
- #include <stdio.h>
- int main()
- {
- signed char a=-2;
- printf("%u",sizeof a);
- return 0;
- }
复制代码
输出值是1,这是因为你在这里使用了sizeof操作符来获取变量a的大小,而a是一个有符号的字符类型(signed char),在大多数系统中,它占用1个字节。
在第二个程序中:
- #include <stdio.h>
- int main()
- {
- signed char a=-2;
- printf("%u",sizeof -2);
- return 0;
- }
复制代码
输出值是4,这是因为你在这里使用了sizeof操作符来获取-2这个整数字面量的大小,而没有指定特定的类型。在这种情况下,编译器会将-2视为int类型,通常情况下,一个int类型的变量在大多数系统中占用4个字节。
所以,第一个程序输出1,是因为sizeof操作符获取的是signed char类型变量a的大小;而第二个程序输出4,是因为sizeof操作符获取的是int类型字面量-2的大小。
希望这可以帮助你理解这两个程序的输出结果。如果还有其他问题,请随时提问。
|
|