| 类型名称 | 占字节数 | 其他叫法 | 表示的数据范围 |
| char | 1 | signed char | -128 ~ 127 |
| unsigned char | 1 | none | 0 ~ 255 |
| int | 4 | signed int | -2,147,483,648 ~ 2,147,483,647 |
| unsigned int | 4 | unsigned | 0 ~ 4,294,967,295 |
| short | 2 | short int | -32,768 ~ 32,767 |
| unsigned short | 2 | unsigned short int | 0 ~ 65,535 |
| long | 4 | long int | -2,147,483,648 ~ 2,147,483,647 |
| unsigned long | 4 | unsigned long | 0 ~ 4,294,967,295 |
| float | 4 | none | 3.4E +/- 38 (7 digits) |
| double | 8 | none | 1.7E +/- 308 (15 digits) |
| long double | 10 | none | 1.2E +/- 4932 (19 digits) |
最大值溢出后变为最小值;最小值溢出后变为最大值。
如:
char a=127 a+1为-128
char a=-128 a-1为127
uchar a=255 a+1为0
uchar a=0 a-1 为255
溢出后的数值计算:
上溢: - [max_count]
下溢: +[max_count]
例如:
char a=126 ,则a + 45 =126+45 =172-256 = -85
uchar a = 2 ,则 a - 100 = -98+256 = 158
a,b 基本类型相同时,有符号与无符号数的转换:
无符号a-->有符号b
if(a<max_count/2) b = a
else b = a - [max_count]
有符号数a-->无符号数b
if(a>0) b = a
else b = a + [max_count]
例1 char a = -119 ;uchar b = a;则b = -119 +256 = 137
例2 uchar a = 137 ; char b = a; 则 b = 137 - 256 = -119
例3 signed char chr = 127;
int sum =127;
chr+=10;
sum+=chr;
sum值是
思路 先把chr当成无符号数,chr +=10变成137 然后把chr转化为有符号数137-256 = -119 。-119 + sum (127) = 8.
本文详细介绍了C语言中的各种数据类型,包括char、int、short、long、float、double和long double的字节数、表示范围及溢出后的处理方式。并通过实例展示了有符号与无符号数之间的转换过程。
7612

被折叠的 条评论
为什么被折叠?



