c primer plus第3章总结:数据类型

1、整数上溢,浮点数上溢、下

int a;

float b,c;a = 2147483647;b = 3.4E38*100.9f;c =3.4E-39;

printf ("int overflow is %d\n", a+1);// 整数上溢

printf ("float upflow is %f\n", b);// 浮点数上溢

printf ("float downflow is %f\n", c);// 浮点数下溢


注意:

(1)float的有效数只有6~7位,在实际应用中,若坐标精度要求较高尽量使用double,以免因为精度损失带来Bug。

(2)声明变量尽量给出初始化值,如int a = -1;

2、类型转换:

表达式中:有符号和无符号的 char 和 short 都将自动转换为 int 型;
赋值语句中:计算结果被转换为将要被赋值的那个变量类型;(按左值类型)
函数传参中:char 和 short 转换为 int 型,float 转换为 double 型
类型          通常Size(字节)  范围
bool                  1       0,1
char                  8       -2^8~2^8-1
short                16      -2^16~2^16-1
int                     32      -2^32~2^32-1
long                 32      -2^32~2^32-1
long long        64      -2^64~2^64-1
float                 32      -3.4E+38~3.4E+38
double            64      -1.79E+308~1.79E+308
long double   64      -1.79E+308~1.79E+308

float f = 1.2f; //这里f告诉编译器,这个数就是float;如果没有f,编译器默认是double,强制转换为float。

3、存储方式:
整  数:二进制;
浮点数:小数部分+整数部分,分别存储。损失更多精度,运算速度比整数慢;
float :8位存储指数及符号部分,24位存储非指数部分(尾数或有效数);
double:8位存储指数及符号部分,56位存储非指数部分(尾数或有效数);   
(不同进制的数值不影响存储方式。)

double : printf("%lf"),  scanf("%lf" ) ; %e 打印指数记法;
float  : printf("%f"),  scanf("%f" ) ; %e 打印指数记法,p表示为 2 的指数;
int    :printf("%d"),  scanf("%d" ) ; printf() 常量不用加“” ,printf("%d", 2);  
%0 、%#0 八进制,%x、%#x、%#X 十六进制; 用 %d 显示float值,不会转换为近似的int值,而是显示垃圾值;

4、C的数据关键字:(7+2+3个)

short(16,%hd,%ho) int(32,%d) long(32,%ld,%lo) unsigned(%u) char(8,&c) float(32,%f) double( 64,%lf )

signed void _bool _Complex 复数 _Imaginart 虚数
可移植的类型: 类似 uint32_t 不是关键字,需要包含头文件 inttypes.h 。
注意:实际应用时尽量使用可移植的数据类型。(__int64只有windows平台才有)
转义字符有待补充!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值