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,
第二个结果就不明白了,会的解释一下
软件换过好几个都是这个情况。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
tomhe666
1楼-- · 2020-01-30 16:17
从不研究这种蛋疼用法,一般都是拆分多行和括号解决问题
dr2001
2楼-- · 2020-01-30 19:35
 精彩回答 2  元偷偷看……
hameyou
3楼-- · 2020-01-30 23:56
这种题是迷惑你的
wye11083
4楼-- · 2020-01-31 01:09
dr2001 发表于 2013-3-26 08:31
如果是从谭浩强的书上看到的类似完全无意义的东西,建议把书撕了;去买C Primer或The C Programming Langua ...

呵呵,国内的素质低的程序员,你懂的。
whyjld
5楼-- · 2020-01-31 01:17
在实际的代码中写这种表达式就是发疯。
C标准中没有没有明确的规定(++j)+(++j)在中间那个+直行的时候j到底应该是多少,每个编译器都可以有不同的处理,你google一下 "C语言 顺序点" 就明白了
laujc
6楼-- · 2020-01-31 02:44
whyjld 发表于 2013-3-26 09:09
在实际的代码中写这种表达式就是发疯。
C标准中没有没有明确的规定(++j)+(++j)在中间那个+直行的时候j到底 ...

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

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

一周热门 更多>