int main(int argc,char* argv[]) { int val = 1; if (val-- == 0) cout << "hello,world" << endl; }
能打印出来 hello,world 吗?
我之前的理解是--运算优先级要高于==,所以这个应该是先做减操作,然后再判断,最后打印 hello,world 。
可是我这边运行后现实是先判断后减。
为啥啊?
1 jimzhong 2017-02-17 13:23:44 +08:00 val--是先返回 val 的值,然后再减 1 |
![]() | 4 liuhaotian 2017-02-17 13:28:49 +08:00 运算符优先级 和 运算符返回值是不一样的。 --val 的返回值是 val-1 val-- 的返回值是 val 如果不能理解为什么运算符有返回值的话,可以搜一下“运算符重载” |
5 Zirconi 2017-02-17 13:29:07 +08:00 这涉及到所谓的 sequence point 的概念。 还有这不是 C++代码吗。。。 |
![]() | 6 liuhaotian 2017-02-17 13:30:24 +08:00 @Zirconi 那我觉得 undefined behavior 更是玄学 hhh |