ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

初识C语言:常见操作符与表达式求值

初识C语言:常见操作符与表达式求值 前言通过这次学习需要认识到常见的操作符会使用它们同时学会表达式求值了解在求值过程中的类型转换识别问题表达式算术操作符也叫双目操作符分别是 - * / %前三个的运算方法和数学中的计算习惯大致一样重点学习 / 和 %/ 除法的运算和数学也一样关键是相除的两者的类型如果除号两端是整数得到的结果也是整数但如果是下面这个例子#include stdio.h int main() { float x 6 / 4; int y 6 / 4; printf(%f\n, x); // 输出 1.000000 printf(%d\n, y); // 输出 1 return 0; }该例子中的x是float但是只得到了1.0不是1.5因为6和4是整数所以只会返回整数部分如果想得到浮点数的结果两个运算数至少有一个浮点数。#include stdio.h int main() { float x 6.0 / 4; // 或者写成 6 / 4.0 printf(%f\n, x); // 输出 1.500000 return 0; }对于%其只能用于整数不能用于浮点数而对应负数求模结果的正负号由第一个运算符的正负号决定输入两个整数并计算平均值结果是小数#includestdio.hintmain(){inta 0;intb 0;//输⼊2个整数scanf(%d%d, a, b);//计算floatavg (a b) /2.0;//输出结果printf(%f\n, avg);//注意结果是%freturn0;赋值操作符区分和前者是赋值操作符而是判断相等inta 3;intb 5;intc 0;c b a3;//连续赋值从右向左依次赋值的。打印出C的值为6在涉及多次赋值时应该分行去书写如下inta 3;intb 5;intc 0;b a 3;c b;复合赋值符如 - * / %,都是对一个数进行自增自减自乘自除自模单目操作符与--两者都是自增操作符又可以分为前置和后置,比如前置是先1后使用后置是先使用后1和-都是单目操作符inta 10;等价于inta 10;表达式求值学会了上述操作符后就可以写出复杂的表达式而复杂的表达式的计算顺序要遵循操作符的属性优先级和结合性这两个属性决定了表达式求值的计算顺序类型转换在进行表达式求值的时候有时会涉及数据类型的转换类型转换一般分为隐式类型转换和显示类型转换显示类型转换就是强制类型转换隐式类型转换又分为整型提升和常规算术转换强制类型转换按照既定规则来转换的例如#includestdio.hintmain(){intn 3.14;//有警告intm (int)3.14;//将3.14强制类型转换为int类型inta 5;intb 2;floatc (float)a / b;//这⾥如果不强制类型转换就是整数除法的printf(%d\n, c);return0;}整型提升表达式中的char short 的长度小于整形类型的长度在表达式计算过程中会被自动提升为int 或unsigned int 然后进行运算常规算术转换变量的数据类型的长度是大于等于整型类型的长度时 如果每个操作数类型不同那么除非其中一个操作数转换为另一个操作数否则操作就无法进行intn 10;floatf 5.5f;floatr n f;//n会转换为float类型再和f进⾏加法运算问题表达式指的是一个复杂的表达式包含了多个子表达式那么子表达式的计算顺序在不确定的情况下就会影响表达式的求值结果比如a 10;c (b a 3) - (a 5);//结果是未定义的因此我们在后续写表达式的时候尽量简化表达式这样的代码才可靠
返回列表