C扩展:基本数据类型
2019-03-24 本文已影响0人
jdzhangxin
1. 类型变种写法
在C语言中,除了有无符号关键字unsigned
,还对应有一个有符号关键字signed
,只是通常省略不写。此外,除了char
,其他整型类型后面可以加上关键字int
表示整型,通常也是省略不写。下面是各种类型其他对应写法。
No. | 类型 | 其他写法 |
---|---|---|
1 | char |
signed char |
2 | short |
signed short int 、signed short 、short int
|
3 | int |
signed int |
4 | long |
signed long int 、long int 、signed long
|
5 | long long |
signed long long int 、signed long long 、long long int
|
通常也使用unsigned
表示unsigned int
的简写。
2. 数值常量表示
如何表示天文数字?
直径 | 年龄 | |
---|---|---|
地球 | 6371千米 | 45.5亿年 |
太阳 | 1.392×106千米 | 45.7亿年 |
银河系 | 10万光年 | 80亿年 |
宇宙 | 1600亿光年 | 138.2亿年 |
注:1光年 = 9.46×1012千米
试一下
int earth_diameter = 6371;
int earth_age = 4550000000;
int sun_diameter = 1392000;
int sun_age = 4570000000;
int light_year = 9460000000000;
int galaxy_diameter = 100000*light_year ;
int galaxy_age = 8000000000;
int universe_diameter = 1600000000000*light_year;
int universe_age = 138200000000;
printf("earth_diameter = %d\n",earth_diameter);
printf("earth_age = %d\n",earth_age);
printf("sun_diameter = %d\n",sun_diameter);
printf("sun_age = %d\n",sun_age );
printf("galaxy_diameter = %d\n",galaxy_diameter);
printf("galaxy_age = %d\n",galaxy_age);
printf("universe_diameter = %d\n",universe_diameter);
printf("universe_age = %d\n",universe_age);
没有后缀的整数常量默认为int
,只能表示21亿左右的数值,如果超过就会警告,执行就会出错,因为int
无法表示超出的数字。
- 整数常量后缀
No. | 类型 | 后缀 |
---|---|---|
1 |
L /l
|
long |
2 |
LL /ll
|
long long |
3 |
U /u
|
unsigned |
4 |
L /l 与U /u 组合 |
unsigned long |
5 |
LL /ll 与U /u 组合 |
unsigned long long |
int earth_diameter = 6371;
long long earth_age = 4550000000LL;
int sun_diameter = 1392000;
long long sun_age = 4570000000LL;
long long light_year = 9460000000000LL;
long long galaxy_diameter = 100000*light_year ;
long long galaxy_age = 8000000000LL;
long long universe_diameter = 1600000000000LL*light_year;
long long universe_age = 138200000000LL;
printf("earth_diameter = %d\n",earth_diameter);
printf("earth_age = %lld\n",earth_age);
printf("sun_diameter = %d\n",sun_diameter);
printf("sun_age = %lld\n",sun_age );
printf("galaxy_diameter = %lld\n",galaxy_diameter);
printf("galaxy_age = %lld\n",galaxy_age);
printf("universe_diameter = %lld\n",universe_diameter);
printf("universe_age = %lld\n",universe_age);
- 浮点数常量后缀
No. | 类型 | 后缀 |
---|---|---|
1 |
F /f
|
float |
2 |
F /f
|
long double |
没有后缀的浮点数默认为double
。
- 科学记数法
表示方式:尾数部分e指数部分
或者尾数部分E指数部分
使用科学计数法表示数字更加简单。
int earth_diameter = 6371;
long long earth_age = 4.55e9;
int sun_diameter = 1.392e6;
long long sun_age = 4.57e9;
long long light_year = 9.46e12;
long long galaxy_diameter = 1e5*light_year ;
long long galaxy_age = 8e9;
long long universe_diameter = 1.6e12*light_year;
long long universe_age = 1.382e11;
printf("earth_diameter = %d\n",earth_diameter);
printf("earth_age = %lld\n",earth_age);
printf("sun_diameter = %d\n",sun_diameter);
printf("sun_age = %lld\n",sun_age );
printf("galaxy_diameter = %lld\n",galaxy_diameter);
printf("galaxy_age = %lld\n",galaxy_age);
printf("universe_diameter = %lld\n",universe_diameter);
printf("universe_age = %lld\n",universe_age);
注意:universe_diameter
出现负值。表示long long
也装不下这个数字(约为1026大于1012),可以使用double
类型表示。
double universe_diameter = 1.6e12*light_year;
printf("universe_diameter = %f\n",universe_diameter);
输出数据不容易阅读,可以使用%e
或%E
以科学记数法输出浮点数(注意:%e
或%E
不能用来输出整数)。
printf("universe_diameter = %e\n",universe_diameter);
科学计数法法除了可以表示极大数,也可以表示极小数,比如电子的直径10-15m.
double electron_diameter = 10e-15;