C语言各个数据类型取值范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言各个数据类型取值范围相关的知识,希望对你有一定的参考价值。

C语言的数据基本类型分为字符型、整型、长整型以及浮点型,取值范围如下:

c语言中关于变量的取值范围的计算方法:

1、使用函数的返回值。将函数计算出的变量作为返回值返回给其它函数使用。

2、使用函数的参数。将函数参数设置为引用传递而不是值传递,就可以把函数计算出的变量通过此参数给其它函数使用。

3、使用全局变量。将函数计算出的值保存到全局变量中,其它函数就可以使用了。

扩展资料

C语言运算中的数据类型自动转换原则

1、隐式转换

C语言在以下四种情况下会进行隐式转换:

(1)算术运算式中,低类型能够转换为高类型。

(2)赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它。

(3)函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。

(4)函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。

2、算数运算的隐式转换

算数运算中,首先有如下类型转换规则:

(1)字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用)。

(2)short型转换为int型(同属于整型)。

(3)float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型)。

其次,有下面的规则。

当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。

参考技术A 首先,在计算机中所有数据都是用一个一个的二进制位(0或1)存储的,单位称为:位(bit);
然后,每8位二进制数(比如01010001)代表一个字节(byte)大小,即1字节=8位;
再然后,C语言每个数据类型都是有固定字节大小的,比如char类型是一个字节即8位,而int类型的大小与具体计算机cpu的机器字长有关,如果是16位cpu,int类型就是2字节=16位大小,如果是32位cpu,int类型就是4字节=32位大小;
最后,每个数据类型的取值范围就是由其字节大小决定的,如char类型的取值范围是-2^7 ~ 2^7-1(涉及到二进制数与十进制数之间的转换方面的知识,此处不再讲)。
参考技术B 32位平台: 分为有符号型与无符号型。 有符号型: short 在内存中占两个字节,范围为-2^15~(2^15-1) int 在内存中占四个字节,范围为-2^31~(2^31-1) long在内存中占四个字节,范围为-2^31~2^31-1 无符号型:最高位不表示符号位 unsigned short 在内存中占两个字节,范围为0~2^16-1 unsigned int 在内存中占四个字节,范围为0~2^32-1 unsigned long在内存中占四个字节,范围为0~2^32-1 实型变量: 分单精度 float 和双精度 double 两种形式: float:占四个字节,提供7~8位有效数字。 double: 占八个字节,提供15~16位有效数字。 (二)16位平台: 1)整型(基本型):类型说明符为int,在内存中占2个字节。 2)短整型:类型说明符为short int或short。所占字节和取值范围均与整型(基本型)相同。 3)长整型:类型说明符为long int或long,在内存中占4个字节。 无符号型:类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。 实型变量: 分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。 双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。 长双精度型16 个字节(128位)内存空间,可提供18-19位有效数字。============================================================================ 参考技术C 1、一般来说,数据类型的大小和编译平台有关系。例如16位平台上的int是2个字节,32位平台上的int是4个字节。
2、目前,主流编译环境都是32位,32位平台下各种数据类型取值范围:
整型 [signed]int -2147483648~+2147483648
无符号整型unsigned[int] 0~4294967295
短整型 short [int] -32768~32768
无符号短整型unsigned short[int] 0~65535
长整型 Long int -2147483648~+2147483648
无符号长整型unsigned [int] 0~4294967295
字符型[signed] char -128~+127
无符号字符型 unsigned char 0~255
单精度 float 3.4 x 10^(-38)~ 3.4 x 10^(+38)
双精度double 1.7 x 10^(-308)~ 1.7 x 10^(+308)
长双精度 long double 1.7 x 10^(-308)~ 1.7 x 10^(+308)
参考技术D 整型 [signed]int -2147483648~+2147483648
无符号整型unsigned[int] 0~4294967295
短整型 short [int] -32768~32768
无符号短整型unsigned short[int] 0~65535
长整型 Long int -2147483648~+2147483648
无符号长整型unsigned [int] 0~4294967295
字符型[signed] char -128~+127
无符号字符型 unsigned char 0~255
单精度 float 3.4 x 10^(-38)~ 3.4 x 10^(+38)
双精度double 1.7 x 10^(-308)~ 1.7 x 10^(+308)
长双精度 long double 1.7 x 10^(-308)~ 1.7 x 10^(+308)本回答被提问者采纳

c语言各数据类型的范围与精度

各数据类型的范围与精度

基本类型字节数位数取值范围(二进制)取值范围(十进制)大概范围(十进制)精度(取决于尾数的范围)
byte1 byte8 bit − 2 7 -2^7 27 ~ 2 7 − 1 2^7 - 1 271 − 128 -128 128 ~ + 127 +127 +127
short2byte16bit − 2 15 -2^15 215 ~ 2 15 − 1 2^15 - 1 2151 − 32767 -32767 32767 ~ + 32768 +32768 +32768 3.2 ∗ 1 0 4 3.2*10^4 3.2104
int4byte32bit − 2 31 -2^31 231 ~ 2 31 − 1 2^31 - 1 2311 − 2147483648 -2147483648 2147483648 ~ + 2147483647 +2147483647 +2147483647 2.1 ∗ 1 0 9 2.1*10^9 2.1109
unsigned int4byte32bit 0 0 0 ~ 2 32 − 1 2^32-1 2321 0 0 0 ~ 4294967295 4294967295 4294967295 4.3 ∗ 1 0 9 4.3*10^9 4.3109
long long8byte64bit − 2 63 -2^63 263 ~ 2 63 − 1 2^63 - 1 2631 − 9223372036854775808 -9223372036854775808 9223372036854775808 ~ + 9223372036854775807 +9223372036854775807 +9223372036854775807 9.2 ∗ 1 0 18 9.2*10^18 9.21018
unsigned long long8byte64bit 0 0 0 ~ 2 64 − 1 2^64 - 1 2641 0 0 0 ~ 18446744073709551615 18446744073709551615 18446744073709551615 1.8 ∗ 1 0 19 1.8*10^19 1.81019
float4byte32bit − 3.402823466 × 1 0 38 -3.402823466×10^38 3.402823466×1038 ~ + 3.402823466 × 1 0 38 +3.402823466×10^38 +3.402823466×1038 1 0 − 6 10^-6 106,即小数点后6位,超出的会进行舍入(即去掉),可以精确表示int 0 0 0 ~ 16777215 16777215 16777215(即 0 0 0 ~ 2 24 − 1 2^24 - 1 2241)
double8byte64bit 1.7976931348623157 ∗ 1 0 308 1.7976931348623157*10^308 1.797693134862315710308 1 0 − 15 10^-15 1015,即小数点后15位,超出的会进行舍入(即去掉),可以精确表示long 0 0 0 ~ 9 , 007 , 199 , 254 , 740 , 991 9,007,199,254,740,991 9,007,199,254,740,991(即 0 0 0 ~ 2 53 − 1 2^53 - 1 2531)
char2byte16bit 0 0 0 ~ 2 16 − 1 2^16 - 1 2161

以上是关于C语言各个数据类型取值范围的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎么计算一个类型的取值范围?如 char 用程序算

C语言中怎么计算一个类型的取值范围?如 char 用程序算

C语言--数据类型--取值范围

64位系统下C语言中int值的取值范围

ANSI C 标准定义的基本数据类型取值范围数字有啥特殊意义

c语言中双精度浮点数(即double类型数据)的取值范围