c语言++运算符的详细执行步骤,运算的和书籍的结果不一...

2020-01-30 13:59发布

本帖最后由 未来电子 于 2013-3-26 19:32 编辑

        int p,q,i,j;
        i=j=3;
        q=0;
        q=++j
        printf("%d,",q);
这时候的运算的值是4,
          int p,q,i,j;
        i=j=3;
        q=0;
        q=(++j)+(++j);
        printf("%d,",q);
这时候的运算的值是10,
          int p,q,i,j;
        i=j=3;
        q=0;
        q=(++j)+(++j)+(++j);
        printf("%d,",q);
这时候的运算的值是16,
第二个结果就不明白了,会的解释一下
软件换过好几个都是这个情况。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
laujc
2020-01-31 02:44
whyjld 发表于 2013-3-26 09:09
在实际的代码中写这种表达式就是发疯。
C标准中没有没有明确的规定(++j)+(++j)在中间那个+直行的时候j到底 ...

是的,以前好像看到过类似的讨论,如果是(j++)+(++j)就更有迷惑性,C语言标准没有要求先执行中间的一个+号左边的还是右边的.

个人感觉,写代码一定不要想着按C语言优先级或顺序,因为具体的编译器实现可能不大相同.
我写代码时,宁可多加括号,再分多条语句来写.

一周热门 更多>