前沿拓展:64位的短整形多少个字节
哎,老大们居然没有一个说完整的,或者就是有笔误的。大体上套用贝式弧现的答案吧,纠正一下他的几处错误:
在标准C++中的来自int的字节长度术每云小于long大于s情hort就行了,多数平台上int占4个字节(32位,不是16位!),所以能表示的范围就是2的32次方,表李历希建士端开话根同先示为数值是-2^(32-1) ~ 2^(32-1) -1 ( ^ 表示成方 )(就是 -2^31 ~ 2^31 - 1, 而不是2^16...)
根诉笑皇深章苏察传头据不同的需要,int包括以下定义:
unsigned short int 得责武至松无符号2字节短整形
short int 带符号2字节短整形 - 32768 ~ 32767
unsigned int 响溶会带每仍教皇无符号4字节整形 0 ~ 2^32 -1 (这个是对的)
int 4字节整形 - 2^31 ~ 2^31 - 1
int 64 6附排界贵胞世矛相依席4位(8字节)整形 - 2系^63 ~ 2^63 - 1 (这个很少用到,一般是表示为高位int和低位int,贝式弧现对它的范围也给错了)
用C语言测试自己编译器所占字节的大小,代码实现如下:
#include<stdio.h>
#include<climits>
#include<float.h>
int main()
{
int* p;
printf("char = %d\n", sizeof(char));
printf("signed char = %d\n", sizeof(signed char));
printf("unsigned char = %d\n", sizeof(unsigned char));
printf("short = %d\n", sizeof(short));
printf("signed short = %d\n", sizeof(signed short));
printf("unsigned short = %d\n", sizeof(unsigned short));
printf("int = %d\n", sizeof(int));
printf("signed int = %d\n", sizeof(signed int));
printf("unsinged int = %d\n", sizeof(unsigned int));
printf("float = %d\n", sizeof(float));
printf("double = %d\n", sizeof(double));
printf("long = %d\n", sizeof(long));
printf("signed long = %d\n", sizeof(signed long));
printf("unsigned long = %d\n", sizeof(unsigned long));
printf("longlong = %d\n", sizeof(LONGLONG));
printf("p = %d\n", sizeof(p));
return 0;
}
1234567891011121314151617181920212223242526272829303132运行结果如下:
再来看一下每个关键字的大值#include<iostream>
#include<climits>
using namespace std;
int main()
{
char n_char = CHAR_MAX;
char n_schar = SCHAR_MAX;
char n_uchar = UCHAR_MAX;
short n_short = SHRT_MAX;
short n_ushort = USHRT_MAX;
int n_int = INT_MAX;
unsigned int n_uint = UINT_MAX;
float n_float = FLT_MAX;
float n_maxfloat = FLT_MANT_DIG;
float n_10float = FLT_MAX_10_EXP;
long n_long = LONG_MAX;
long n_Ulong = ULONG_MAX;
long long n_llong = LLONG_MAX;
long long n_ullong = ULLONG_MAX;
cout << "max value is :" << endl;
cout << "char is:" << n_char << endl;
cout << "usigned char is:" << n_schar << endl;
cout << "unsigned char is:" << n_uchar << endl;
cout << "int is:" << n_int << endl;
cout << "unsigned int is:" << n_uint << endl;
cout << "short is:" << n_short << endl;
cout << "unsigned short is:" << n_ushort << endl;
cout << "folat is :" << n_float << endl;
cout << "numbers of float is:" << n_maxfloat << endl;
cout << "float 10_exp is:" << n_10float << endl;
cout << "long is:" << n_long << endl;
cout << "unsigned long is:" << n_Ulong << endl;
cout << "long long is:" << n_llong << endl;
cout << "unsigned long long is:" << n_ullong << endl;
return 0;
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051运行结果:

因为char没有大值,所以这里没有输出结果!
每个关键字的小值#include<iostream>
#include<climits>
using namespace std;
int main()
{
short n_short = SHRT_MIN;
int n_int = INT_MIN;
float n_float = FLT_MIN;
float n_10float = FLT_MIN_10_EXP;
long n_long = LONG_MIN;
long long n_llong = LLONG_MIN;
cout << "min value is :" << endl;
cout << "int is:" << n_int << endl;
cout << "short is:" << n_short << endl;
cout << "folat is :" << n_float << endl;
cout << "float 10_exp is:" << n_10float << endl;
cout << "long is:" << n_long << endl;
cout << "long long is:" << n_llong << endl;
return 0;
}
12345678910111213141516171819202122232425262728293031323334运行结果:
有关每一个字节的取值范围如下: 1、char:表示字符型数据,占1个字节(8个二进制位),包含256个不同的整数。 有符号的范围: -128 ~ 127。每个整数都对应一个字符。整数和字符的对应关系由ASCII码表规定。 无符号的范围:0 ~ 255。12342、short:表示短整型数据,一般占2个字节(16个二进制位)。
有符号的范围:-32768 ~ 32767。
无符号的范围0到65535。
12343、int:表示基本整型数据,一般占4个字节(32个二进制位)。
有符号的范围:-2147483648 ~ 2147483647。
无符号的范围:0 ~ 4294967295。
12344、long:表示长整型数据,一般占4个字节(32个二进制位)。
有符号的范围:-2147483648 ~ 2147483647。
无符号的范围:0 ~ 4294967295。
12345、float:表示单精度浮点型数据,一般占4个字节(32个二进制位,1bit(符号位) 8bits(指数位) 23bits(尾数位))。
范围:-3.40E+38 ~ +3.40E+38
精度:6 ~ 7位有效数字
12346、double:表示双精度浮点型数据,一般占8个字节(64个二进制位,1bit(符号位) 11bits(指数位) 52bits(尾数位))。
范围:-1.79E+308 ~ +1.79E+308
精度:15 ~ 16位有效数字
12347、unsigned:表示无符号数据。
8、signed:表示有符号数据,默认不用写。
另外,我将不同位平台下关键字所占的字节的链接贴在下面: https://blog.csdn.net/cherrydreamsover/article/details/81022994拓展知识:64位的短整形多少个字节
还有其他疑惑?想了解更多?可以点击 【在线咨询】