C语言 的基本数据类型 共9种

数据类型数据类型符占用字节数数值范围
整型int2(或4)同短整型(或长整型)
短整型short2-32768~32767
长整型long4-2的31次方~2的31次方-1
无符号整型unsigned [int]2(或4)同无符号短整型(长整型)
无符号短整型unsigned short20~65535(0~2的16次方-1)
无符号长整型unsigned long40~2的32次方-1
单精度实型float4-10的38次方~10的38次方
双精度实型double8-10的308次方~10的308次方
字符型char1-128~127

 

一  在C语言中,如果执行一个运算同时有无符号数和带符号整数参加,那么C编译器会隐含地将带符号整数强制类型转换为无符号数,因而会带来一些意想不到的结果。

二 C语言中的浮点数类型

当在int、float、double等类型之间进行强制类型转换时,程序将得到以下数值转换结果(假定int为32位)

  1. 从int转换为float时, 不会发生溢出,但可能有效数字被舍入。
  2. 从int或float转换为double时, 因为double的有效位数更多,故能保留精确值。
  3. 从double转换为float时,因为float表示范围更小,故可能发生溢出,此外,由于有效数位变少,故可能被舍入。
  4. 从float 或double转换为int时,因为int没有小数部分,所以数据可能会向0方向被截断。 例如1.999被转换为1, -1.9999被转换为-1.  此外,由于int的表示范围更小,故可能发生溢出。将大的浮点数转换为整数可能会导致程序错误。



    看一个例子: 假定变量i、f、d的类型分别是int、 float、double,判断下列每个C语言关系表达式在32位机器上运行时是否永真。
    A  i == (int)(float)i

    B (d+f) - d ==f

    分析: A 不是, int精度比float高,当i转换为float再转换为int时,有效数字可能丢失。
                 B 不是, 例如 当d=1.79*10的308次方,f=1.0时, 左边为0, 因为d+f时f 需向d对阶, 对阶后f的尾数有效数位被舍去而变为0, 故d+f仍然等于d, 再减去d后结果为0,  而右边为1.0 。

 

 

 

  • 28
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值