| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1987 人关注过本帖
标题: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
快速回复:m++和++m在表达式中的计算问题
数据加载中...
 
   



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

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