【C语言解惑】【1】【数据类型、后缀、初始化、逗号运算符】

本文详细介绍了C语言中数据类型混合使用时的自动转换,探讨了类型后缀对数值的影响,分析了编译器在初始化、变量长度和函数参数处理中的作用,同时讲解了逗号运算符的使用注意事项,避免产生歧义。
摘要由CSDN通过智能技术生成
1、混合使用数据时,注意系统对数据类型的自动转换
     不同类型之间进行计算,转换规则就是一句:位数低的往位数高的扩展
     转换规则:①字符型必须先转换成整型;②short型转换成int型;③float型在运算时一律先转换成double型;④int型与long型数据进行计算时,先将int转化成long型,结果为long型。
 1.1 例子:
#include<stdio.h>
void main()
{
    int a=10,aa=2;
    float b=3.2;
    printf("%f",a/b);               //①
    printf("%f",aa/a);              //②
    printf("%f",(double)aa/a);      //③
    printf("%f",(double)(aa/a));    //④
}
 上面的程序可以正常编译。

 结果:

3.125000
0.000000
0.200000
0.000000


    分析:①、这条语句,最后结果为:3.125000。除法的运算,把a的值,转化为10.000000;然后是,float类型之间的除法运算,得到的结果就是10.000000/3.200000=3.125000;最后显示的为3.125000。
          ②、这条语句,最后结果为:0.000000。首先要知道的是运算顺序,可能很多人傻傻的认为前面这个printf函数中的格式符“%f”对“aa/a”的运算有影响,然而并没有。系统会先计算aa/a,把结果用这一个中间值保存,这个中间值类型自然就是这个表达式最终的类型int,而计算的结果就是0,所以,最后结果是0.000000.
          ③、这条语句,最后结果为:0.200000。强制类型转换先把“aa”的值转化为了double型,又进行运算的。
          ④、这条语句,最后结果为:0.000000。这一句和第三句的区别,就很明显了,是对表达式的值进行了强制转换。
    同时,不要把“a/b”,这个表达式看成错误的,认为“/”是一个取整符号,两边都应该是整型。这个“/”是除号,int c=(int)a / (int)b;这条语句有取整的功能。注意其和取余“%”用法的区别,如下:


 1.2 取余“%”的用法
#include<stdio.h>
void main()
{
    int a=10;
    float b=3.2;
    printf("%f",a%b);
}
  这条语句会编译出错,因为类型使用错误。“%”当取余来用时,左右两边的数都应该为整型。

2、数据类型的后缀符号
 C语言新标准对于常量增加了后缀修饰,
 1、int类型数据,加后缀u(U),用来表示整数常量是一个无符号数;
 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值