自减自增和逗号的优先级

来源:互联网 发布:淘宝动漫周边店 编辑:程序博客网 时间:2024/06/05 10:46

自减自增和逗号的优先级

✿问题引入✿

今天突然想起一种写法n = 10; printf("%d %d\n", n, n--);最后输出的竟然是9 10,感觉很惊讶,于是又多试了几组,代码如下:

#include <cstdio>using namespace std;int main() {    int n = 10;    printf("%d %d %d %d %d %d %d %d\n", n, n--, n--, n, n, n--, n--, n);    return 0;}

输出就更惊艳了,是6 7 8 6 6 9 10 6,因此我就仔细查了优先级,大致发现了其中的缘由。

✿原因分析✿

首先自减和自增(也就是n++--n)的优先级比逗号高,逗号是符号中优先级最低的。又因为自减和自增从右到左结合,所以输出的正确顺序就是先把自减全部执行完,而且还是从右到左结合,所以10就变成9 8 7 6,最后再输出内容,就变成了6 7 8 6 6 9 10 6

Reference:运算符优先级