int 和 double 都是基本数据类型, int 是整形, double 是浮点型。
1.int 型变量占用的存储空间和机器字一样大,即 32位系统中是 4个字节; 64位系统中是 8个字节;
而 double 型变量 一般占用8字节,double 型变量占用的存储空间不会小于 int 型变量。
2.double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。
扩展资料
一整形
1.整形有char、short、int、long、long long,这5个也默认为signed XX ;
规则:short至少16位;int至少和short一样;long至少32位,且至少和int一样长;long long至少64位,且至少和long一样长。
其中,后面4个都有无符号变体。unsigned short、unsigned int、unsigned long、unsigned long long.
注意,unsigned本身是unsigned int的缩写。
可以看到,在32位和64位计算机上,对于整形唯一不同的就是int和指针的大小,其中32位计算机上int占2字节,64位上占4字节。指针大小和int大小相同。
2.wchar_t
char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
wchar_t数据类型一般为16位或32位.
总之,wchar_t所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t宽字符类型的相关操作。
3.++11新增类型:char16_t和char32_t
char16_t:16位无符号->前缀u表示
char32_t:32位无符号->前缀U表示
二、浮点型
浮点有3个,float、double、long double
规则:float至少4字节;double至少6字节,且不少于float;long double至少和double一样多。
通常float32位,double64位,long double80、96或128位。我在VS2013上测到long double位64位。
参考资料
1、类型不同
int 和 double 虽然都是基本数据类型,但 int 是整形, double 是浮点型。
2、在计算中的存储方式不同
int在32位计算机中占4个字节,这4个字节的在内存中存放的顺序为低字节存在低地址,高字节存在高地址。
double是64位的,在存储方式上都是遵从IEEE的规范,其遵从的是 IEEE R64.53。
扩展资料:
C\C++中int、double等数据类型范围的理解
实例代码:
short sia = -32760;
short sib = (-32760 + 32768) % 65536 - 32768;
printf("not overflow\n");
printf("sia = %hd\n", sia);
printf("sib = %hd\n", sib);
sia = -32769;
sib = (-32769 + 32768) % 65536 - 32768;
printf("\noverflow\n");
printf("sia = %hd\n", sia);
printf("sib = %hd\n", sib);
sia = 32768;
sib = (32768 + 32768) % 65536 - 32768;
printf("\noverflow\n");
printf("sia = %hd\n", sia);
printf("sib = %hd\n", sib);
运行结果:
说明:
1、在赋值操作时,如sia = -32769,-32769是先作为一个常量值存放在内存中,这个数值是没有越界的概念的,就是二进制值,只是在赋值操作时才进行了对应的数据转换;
2、从运行结果可见,该处理机制对数据溢出和不溢出得到的结果都是适用的;
3、联想数据闭环循环,如程序中32768,超过short型上限,其溢出一个数,作为一个数据闭环,则直接跳转到了-32768,也就是short型下限值。
在c++中,int和double有以下几个区别:
1、类型区别:
int是定义的整型数据,如int a 则a的值只能是整型,比如a=3。
double双精度浮点数,就是有小数点的数。
2、在计算中的存储方式:
int在32位计算机中占4个字节,这4个字节的在内存中存放的顺序为低字节存在低地址,高字节存在高地址。
double是64位的,在存储方式上都是遵从IEEE的规范,其遵从的是 IEEE R64.53。
在内存中的存储主要分成三部分,分别是:
符号位(Sign):0代表正数,1代表负数
指数位(Exponent):用于存储科学计数法中的指数部分,并且采用移位存储方式
尾数位(Mantissa):用于存储尾数部分
3、表达范围:
int:在32/64位系统中都是32位,取值范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。
double:有效数字为15-16,数值范围为-1.7*10(-308)~1.7*10(308);
扩展资料:
C++中,整型数据是用int来进行定义的,整型的范围就是指int类型所能表示的整数的范围。在32位或64位机器中,int占4个字节,即32位。
int能表示的最大正整数为:0111 1111 1111 1111 1111 1111 1111 1111 (最高位表示符号位,正数符号位为0)对应的10进制数为2^31-1=2147483647,对应的十六进制表示为:0x7FFFFFFF。
int能表示的最小负整数为:1000 0000 0000 0000 0000 0000 0000 0000 (最高位表示符号位,负数符号位为1),对应的十六进制表示为0x80000000,而C++规定该值为-2^31=-2147483648。
所以最终,int类型(整数类型)的范围为-2^31 ~ 2^31-1,即-2147483648~2147483647,十六进制表示:0x80000000~0x7FFFFFFF。
double 的数据类型取值范围如下:
1、负值取值范围为 -1.79769313486231570E+308 到 -4.94065645841246544E-324。
2、正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。
一般来说 , int 型变量占用的存储空间和机器字一样大,即 32位系统中是 4个字节; 64位系统中是 8个字节; 而 double 型变量 一般占用8字节,double 型变量占用的存储空间不会小于 int 型变量。
double 型表示的值范围要比 int 表示的值范围大,且从 double 值转换到 int 值,会进行四舍五入,从而有精度损失。