如果在语句中同时用了逗号运算符和赋值运算符,则需要特别注意,赋值运算符的优先级高于逗号运算符。看下面这两个例子:
int a1, b = 2, c = 7, d = 5; // 第1行
a1 = (++b, c--, d+3); // 第2行
本例,对于第2行,由于用逗号分开的三个表达式被包含在括号内,所以先计算这个括号内的表达式,再进行赋值。括号内的表达式的最终值应该是最后一个表达式的值,也就是 (d+3) 的值,为 8,所以 a1 被赋值为 8。
int a1, b = 2, c = 7, d = 5; // 第1行
a1 = ++b, c--, d+3; // 第2行
本例,对于第2行,由于赋值运算符的优先级高于逗号运算符,所以“a1=++b” 实际是逗号表达式中的一个子表达式,虽然最终表达式的值虽然也为 8,求值之后,“++b” 的值为3,a1被赋值为 3,而整个逗号表达式的值为 8。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。