暖暖的都是爱百度云:C语言问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/02 18:01:41
如k==j==i+5,根据运算符的左结合性,先计算k==j,该式不成立,其值为0,再计算0==i+5
===========================
左结合难道不是先算j==i+5吗?

k==j==i+5,

有三个符号
==, ==, +
因为两个连续的 "==" 是同样的优先级 左结合所以先计算第一个==
k==j
这时候原算式就成了
0==i+5

因为+的优先级高 所以先算i+5

C语言的语法中,有优先级的考虑,在计算表达式中,+运算的优先级比==运算高,得先算+,然后才考虑运算符的左结合性

因为+的运算符比==的运算符优先级低,所以应该先算i+5
设i+5=R1
得到:k==j==R1
又因为==是左结合所以应从左向右运算

也就是先算k==j
得到R2
然后再算R2==R1

我补充一下: !(非) 高
算术运算符 ↑
关系运算符 |
&&和|| |
赋制植运算符 低