int 有一位是用来存放符号的
unsigned int
[signed]short int 无论是什么编译器 都固定为 16 位 表示范围:-32768~32767
unsigned short[int]无符号短整型:0~65535
unsigned long[int]无符号长整型 : 0~4294967295
[signed] long [int]有符号长整型:-2147483648~2147483647
要用代码在c,c++里各算一遍,所占字节在两个软件里是不同的
main()
{
}
c输出结果分别是2、2、1、4、2,int 占两字节;
c++输出结果分别是4、2、1、4、4,int占4个字节
short int 就是 short
C++标准规定,int占一个机器字长。在32位系统中int占32位,也就是4个字节,而在老式的16位系统中,int占16位,即2个字节。而C++标准中只限制规定short
结论 无论何时 short 肯定是占两个字节!
编译器直接查范围
#include <limits.h>
#include < float.h>
#include <stdlib.h>
int main( void)
{
printf( " char类型的变量存储值从%d到%d\n ", CHAR_MIN, CHAR_MAX);
printf( " unsigned char类型的变量存储值从0到%u\n ", UCHAR_MAX);
printf( " short类型的变量存储值从%d到%d\n ", SHRT_MIN, SHRT_MAX);
printf( " unsigned short类型的变量存储值从0到%u\n ", USHRT_MAX);
printf( " int类型的变量存储值从%d到%d\n ", INT_MIN, INT_MAX);
printf( " unsigned int类型的变量存储值从0到%u\n ", UINT_MAX);
printf( " long类型的变量存储值从%ld到%ld\n ", LONG_MIN, LONG_MAX);
printf( " unsigned long类型的变量存储值从0到%lu\n\n ", ULONG_MAX);
printf( " long long类型的变量存储值从%lld到%lld\n ", LLONG_MIN, LLONG_MAX);
printf( " unsigned long long类型的变量存储值从0到%llu\n ", ULLONG_MAX);
printf( " 最小的非零float类型变量的值的是%.3e\n ", FLT_MIN);
printf( " 最大的float类型变量的值的是%.3e\n ", FLT_MAX);
printf( " 最小的非零double类型变量的值的是%.3e\n ", DBL_MIN);
printf( " 最大的double类型变量的值的是%.3e\n\n ", DBL_MAX);
printf( " 最小的非零long double类型变量的值的是%.3Le\n ", LDBL_MIN);
printf( " 最大的long double类型变量的值的是%.3Le\n ", LDBL_MAX);
printf( " float类型的变量提供%u位精度的小数位数\n ", FLT_DIG);
printf( " double类型的变量提供%u位精度的小数位数\n\n ", DBL_DIG);
printf( " long double类型的变量提供%u位精度的小数位数\n ", LDBL_DIG);
system( " pause ");
return 0;