我在c上引用了一个教程,我发现signed int和short signed int范围是-32768到32767,它是2个字节,是它们的任何区别,如果不是那么为什么使用两种声明.
您的问题的最佳答案可以在ANSI的ANSI标准中找到,第2.2.4.2节 - 数值限制.为方便起见,我在此复制了该部分的相关部分:
2.2.4.2数值限制
符合要求的实施应记录本节规定的所有限制,应在标题和规定中规定.
"整体类型的大小"
下面给出的值应替换为适用于#if预处理指令的常量表达式.它们的实现定义值的大小(绝对值)应等于或大于显示的值,并带有相同的符号.
最小对象的最大位数,不是位字段(字节)CHAR_BIT 8
signed char SCHAR_MIN
-127 类型的对象的最小值signed char SCHAR_MAX
+127 类型的对象的最大值unsigned char UCHAR_MAX
255 类型的对象的最大值char CHAR_MIN类型的对象的最小值,见下文
char CHAR_MAX类型的对象的最大值,请参见下文
对于任何支持的语言环境MB_LEN_MAX
1 ,多字节字符中的最大字节数short int SHRT_MIN
-32767 类型的对象的最小值short int SHRT_MAX
+32767 类型的对象的最大值unsigned short int USHRT_MAX
65535 类型的对象的最大值int INT_MIN
-32767 类型的对象的最小值int INT_MAX
+32767 类型的对象的最大值unsigned int UINT_MAX
65535 类型的对象的最大值long int LONG_MIN
-2147483647 类型的对象的最小值long int LONG_MAX
+2147483647 类型的对象的最大值unsigned long int ULONG_MAX
4294967295 类型的对象的最大值
未广泛实现的C99添加了以下数字类型:
- long long int类型对象的最小值LLONG_MIN -9223372036854775807 // - (263 - 1)
- long long int类型的对象的最大值LLONG_MAX +9223372036854775807 // 263 - 1
- unsigned long long int类型的对象的最大值ULLONG_MAX 18446744073709551615 // 264 - 1