一、 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;
}
上面代码的运行结果为:如图所示:
相信大家能看明白,从头到尾我进行了比较详细的讲解,当然不可能符合所有人的逻辑思维习惯,希望可以互相学习进步。