Fra*_*lea 5 c integer-promotion
什么时候有符号整数不能代表整数提升的原始类型的所有值?
来自K&R,C Programming Language,2nd Ed.页.174
A.6.1整体推广
无论是否有符号,都可以使用字符,短整数或整数位字段,或者枚举类型的对象,可以在任何可以使用整数的表达式中使用.如果int可以表示原始类型的所有值,则该值将转换为int; 否则该值将转换为unsigned int.这个过程称为整体推广.
此代码显示了我的系统类型的限制:
#include <stdio.h>
#include <limits.h>
int main(void)
{
printf("CHAR_MAX: %i\n", CHAR_MAX);
printf("UCHAR_MAX: %i\n", UCHAR_MAX);
printf("SHORT_MAX: %i\n", SHRT_MAX);
printf("USHORT_MAX: %i\n", USHRT_MAX);
printf("INT_MAX: %i\n", INT_MAX);
printf("UINT_MAX: %u\n", UINT_MAX);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是:
CHAR_MAX: 127
UCHAR_MAX: 255
SHORT_MAX: 32767
USHORT_MAX: 65535
INT_MAX: 2147483647
UINT_MAX: 4294967295
Run Code Online (Sandbox Code Playgroud)
signed int类型比任何其他类型都大,所以什么时候会回到UINT_MAX?
| 归档时间: |
|
| 查看次数: |
4771 次 |
| 最近记录: |