C语言运算符的优先级,不同类型的数据的混合运算。

一、 C语言运算符的优先级

算数运算符其实很好理解,也就是我们数学中学过的 加、减、乘、除、乘方等这些运算,即使减号在左边,乘法运算在右边,那最先计算的还是乘法。

所以,简单总结:

算数运算符运算顺序为自左向右运算(左结合性),可以简单理解为从左边开始找优先级


赋值运算符可以这样理解比如 a = b = c

c有一个苹果,我们要把这个苹果给c,那么我们就需要使用b这个媒介来进行传递,由此c给b,b再给a,结束操作,总结:

赋值运算符运算顺序为自右向左(右结合性),可以简单理解为从右边开始进行操作


二、不同类型的数据的混合运算。

1、+、-、*、/ 运算的两个数中如果其中有一个为float或者double,那么结构就是double,为什么,因为系统会将所有float型转换为double型,然后再进行运算。   这里其实我个人感觉是挺奇怪的。

但是,在系统中确实是double类型可以表示的范围更加的宽泛(可以表示的有效数字越多)

为什么都转换为double类型的?具体看如下所示:

1.1    在C语言中,浮点数类型包括float和double两种。浮点数类型的精度比整数类型更高,可以表示更大的数值范围和更高的精度。

1.2    当进行浮点数运算时,C语言的类型系统会根据操作数的类型进行类型转换,以保证运算的正确性和精度。这是因为在进行浮点数运算时,如果操作数的类型不一致,会导致精度损失或数据丢失。

1.3     为了避免这种情况,C语言标准规定了一套类型转换规则。其中的一条规则是,如果运算中的操作数中有一个是float类型,那么另一个操作数会被自动转换为double类型,以确保运算的精度和正确性。

1.4     将float类型转换为double类型,是为了提高精度,因为double类型能够表示更大的数值范围和更高的精度。这种类型转换是在运算之前进行的,可以保证运算结果的精度不会受到影响。

总之,C语言中将float类型转换为double类型是为了保证浮点数运算的精度和正确性。这种类型转换是由C语言的类型系统和类型转换规则决定的。

2、int与float与double数据在一起进行运算时候,结果也是double类型。

3、字符(char)型数据与整型数据进行运算时候,就是把字符首先转换为标准的ASCII码再进行运算的操作。下面看一个具体的例子:

       23 + ‘A’  首先A所对应的标准ASCII码为65,所以其值为88(发发),其它的都是同样的道理,我们知道是这样一回事就可以了,具体是如何进行操作的,我相信很少能有人会去把ASCII码表背下来吧,哈哈哈哈哈

三、看个代码吧,那就,还得是要实战操作

#include<stdio.h>
int main()
{
    char a1,a2;    //定义两个字符串变量
    a1 = 'a';    //给变量赋值,只不过是字符串格式的
    a2 = a1 + 32;    //算数运算符操作(左结合性),这里是先找到a的ASCII值,为97
    printf("%c\n", a2);     //以字符形式打印,结果为97+32=129,再转换为ASCII值返回,结果为
    printf("%d\n", a2);   //以数值形式进行打印    
    return 0;
}

上面代码的运行结果为:如图所示:

相信大家能看明白,从头到尾我进行了比较详细的讲解,当然不可能符合所有人的逻辑思维习惯,希望可以互相学习进步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值