C语言i++i--的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 23:57:17
int i=8;
printf("%d\n%d\n%d\n",--i,i--,++i);

我要知道的是为什么结果是7、9、9
还有i++ i-- --i ++i 这四个有没有优先级的划分??
如果没有那么一同出现的时候先算那个?

前置和后置有优先级的差别。

但是优先级只是“结合优先级”,影响的是表达式的计算意图, 而不影响谁先算谁后算。 比如 1 + 2 + 3 * 4 这样的式子, *优先级高决定了式子的意图是3 * 4 ,而不是 2+ 3 。 但是优先级高不代表3*4就先算。 实际上编译器完全可以先算1+ 2 再算3*4 再算两个结果的和

所以你这个问题实际上答案是: C语法里,在两个“序列点”间对一个变量多次赋值(像你这里多次自增就是多次赋值了)是不合语法的。 具体行为由编译器决定。 所以这样的语句根本不要写。 因为在一个编译器上结果是799,换个编译器可能就完全不同了

--/++在前先计算再返回,在后先返回再计算,优先级可以看参考资料的地址,虽然是C++的,但C也一样

我简单的给你讲,--,++在前面就是先运算,然后打印出来,--,++在后,就是先打印出来以后,再进行运算