其他分享
首页 > 其他分享> > 不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)

不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)

作者:互联网

不同标准下的C语言常量范围的默认类型的检测

 

一、C90与C99标准下的不同常量范围的默认类型

 

 

 

 

  1. 在C90的标准下:

2147483648被计算机认为带符号数,而2147483647则作为无符号数与之进行运算。

根据计算机中C语言的规则,如果去运算中既有无符号的数又有有符号的整数,将两个数据均当作无符号数处理。

2147483648无符号表示为100。。。0(31个0), 而2147483647无符号表示为011。。。1(31个1),根据比较得出前者大,故输出结果为false。

-2147483648先处理其数据表示一个无符号数表示为100。。。0(31个0)减去1后即为011。。。1(31个1)而后者2147483647在C90标准下作为带符号数当作无符号数处理其表示仍为011。。。1(31个1),故最后两者的值相等。

 

  1. 在C99的标准下:

2147483648与2147483647均作为带符号数,故而-2147483648与2147483647可以按带符号数比较大小,并且后者大于前者。同理,-2147483648-1与2147483647均被当作带符号数处理,故后者大于前者。

 

 

标签:C90,符号,带符号,C99,样例,2147483647,2147483648,31
来源: https://www.cnblogs.com/WScoconut/p/16054214.html