编写一个程序以确定分别由signed及unsigend限定的char short int 与long类型变量的取值范围?

2024-10-30 19:38:00
有2个网友回答
网友(1):

书上说了,各类型长度定义的符号常量可以在中找到。
我的书上附录B.11可以看到。
以下是程序:
#include "stdio.h"
#include "limits.h"

main()
{
printf("signed char:%ld--%ld\n", SCHAR_MIN, SCHAR_MAX);
printf("unsigned char:%ld--%ld\n", 0, UCHAR_MAX);
printf("signed short:%ld--%ld\n", SHRT_MIN, SHRT_MAX);
printf("unsigned short:%ld--%ld\n", 0, USHRT_MAX);
printf("signed int:%ld--%ld\n", INT_MIN, INT_MAX);
printf("unsigned int:%ld--%u\n", 0, UINT_MAX);
printf("signed long:%ld--%ld\n", LONG_MIN, LONG_MAX);
printf("unsigned long:%ld--%u\n", 0, ULONG_MAX);

system("pause");
}
为什么unsigned long使用 %u 打印而不是%ld ?
因为%ld 能打印的最大范围相当于 signed long ,是unsigned long最大值的一半,
因此无法打印出正确值,而%u的范围相当于unsigned long可以打印出来。

网友(2):

这个还要跟据你用的编译器来确定!你可以用sizeof(数据类型)先求出它的字节数的大小!比如在Win-Tc里面int是两个字节,long是四个字节,所以他们的范围分别为::在signed:-32768—32767 —2的31次方~(2的31次方减去1)。在unsigend:0-65535 2的32次方