2.10-赋值运算符与表达式:
1.
1-1:
公式:
expr1 = (expr1)op(expr2)
expr1 op= expr2
(op:+,-,*,/,%,<<,>>,&,^,|)
注意:expre2两边的圆括号是必不可少的(x *= y + 1;-->x = x * (y + 1) )
1-2-eg:
i = i + 2;与i += 2;区别:
后一种形式值计算一次。
总结:赋值表达式的类型是它的左操作数的类型,其值是赋值完成后的值。
2-11-条件表达式
注意:
(n > 0) ? f : n;
f为float,n为int,那么表达式也为float(遵循基本类型转换规则)
2-12-运算符优先级与求值顺序
2-12-1:
c语言没有指定同一个运算符中多个操作数的计算顺序(&&,||,?:,“.”除外)
eg:x = f() + g();f()可以在g()之前计算,也可以在g()之后计算,如果其中一个函数改变的变量可能影响另一个函数,那么就依赖函数的计算顺序
2-12-1:
c语言也没有指定函数各参数的求值顺序
eg:printf("%d %d\n", ++n, power(2,n));//没法保证++n,是在函数调用之前执行,还是在调用之后执行。由此产生“副作用”
总结:任何一种编程语言,如果代码的执行结果与求值顺序相关,都是不好的程序设计风格。
2.10-赋值运算符与表达式--2-11-条件表达式--2-12-运算符优先级与求值顺序
最新推荐文章于 2023-06-17 00:08:29 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)