标题:m++和++m在表达式中的计算问题
取消只看楼主
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
结帖率:75%
已结贴  问题点数:10 回复次数:1 
m++和++m在表达式中的计算问题
我的问题是关于  m++和++m在表达式中的计算问题,
代码如下:
程序代码:
#include <stdio.h>

int main()
{
    int a=2,x=2,p,q;
    p=(a++)+(a++);
    q=(++x)+(++x);
    printf("a=%d,x=%d,p=%d,q=%d\n",a,x,p,q);
   

    return 0;

 } 
编译运行结果为:


我现在是这么理解的:
(1)书上写m++这个表达式的结果是m+1以前的结果,副作用是使m+1; ++m这个表达式的结果是m+1以后的结果(当然m也+1);
(2)对于p=(a++)+(a++)这个式子,
   第一个 a++的结果是2,之后a+1,a变为3;
   第二个 a++就是在a=3的基础上计算,a++的结果是3,之后a+1变为4;
   所以 对于a=4,p=5 我是理解的。(当然有可能理解的不对,结果碰巧对了,这里也需要请大家指导);
(3)对于q=(++x)+(++x)这个式子,
   第一个 ++x的结果是x+1以后的结果,即3,同时x变为3;
   第二个 ++x的结果以x=3为基础,所以 ++x是4,同时x也等于4;
   按照这种理解,x=4, q=7. 这与编译运行的结果不一致,编译运行后q实际为8.

 所以,对于 m++, ++m这种表达式在运算过程中到底是怎么个顺序呢?

搜索更多相关主题的帖子: 表达式 计算 编译 运行 结果 
2017-08-22 11:20
醉游人
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2017-6-4
得分:0 
回复 2楼 renkejun1942
好的,我就不纠结这个了。
2017-08-22 15:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480208-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032584 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved