2.10-赋值运算符与表达式--2-11-条件表达式--2-12-运算符优先级与求值顺序

本文介绍了C语言中的赋值运算符和表达式,包括(i=i+2;)与(i+=2;)的区别,强调了赋值表达式类型和值的确定。同时,讨论了条件表达式和运算符优先级,指出C语言并未规定同一运算符中操作数的计算顺序和函数参数的求值顺序,可能导致副作用。建议避免编写依赖求值顺序的代码。
摘要由CSDN通过智能技术生成

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,是在函数调用之前执行,还是在调用之后执行。由此产生“副作用” 

总结:任何一种编程语言,如果代码的执行结果与求值顺序相关,都是不好的程序设计风格。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值