我对以下2个代码片段有疑问.
我在64位机器(x86_64-linux-gnu)上运行此代码.我可以看到Val数据类型的值溢出unsigned integer.
#include<stdio.h>
main()
{
unsigned int Val = 0xFFFFFFFF-15, Val2 = 0xFFFFFFFF;
if (Val+16 < Val2)
{
printf("Val is less than Val2\n");
}
}
Run Code Online (Sandbox Code Playgroud)
如果数据类型unsigned char不溢出.
#include<stdio.h>
main()
{
unsigned char Val = 0xFF-15, Val2 = 0xFF;
if (Val+16 < Val2)
{
printf("Val is less than Val2\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
Val当数据类型是unsigned char时,值是否被提升为高数据类型?- 如果是,为什么它不能从32位升级到64位
unsigned long?
c ×1