Skip to content

表达式

隐式类型转化

C语言整形算术运算的时候至少是以缺省整形的精度来进行的,表达式中的字符型、短整型在使用前会被转换成整形

C
char a, b, c;
a = (-a^b<<1)>>1;

算数转化

某个操作符的操作数属于不同的类型

转换方式:int => unsigned int => long int => unsigned long int => float => double => long double

操作符的属性

  • 操作符的优先级
  • 操作符的结合性:操作符的运算顺序从左到右还是从右到左
  • 操作符是否控制程序的顺序

优先级

QQ图片20220726104658

a + --b这种由于“--”符号不能确定是在之前之后进行,所以没有正确答案

注意溢出

尽量编写结果取决于不确定的运算顺序的表达式

如果操作对于顺序的要求很高的话,最好添加一个中间值然后分行进行

C
f() + g() + h()   ===> temp = f(); temp += g(); temp += h();