| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 980 人关注过本帖
标题:请讲一下 m,n 的值为什么都是 14 ???
只看楼主 加入收藏
胖嘟嘟
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2014-4-18
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
请讲一下 m,n 的值为什么都是 14 ???
#include<stdio.h>
void main()


{
   int m, n, x=5;
   n = (++x)+(++x) ;
   
   m = (x--) + (x--);
   
   printf("%d  %d\n", m, n);
}
2014-05-06 22:40
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:4 
int m, n, x=5;

    x = x + 1;
    x = x + 1;
    n = x + x;
    m = x + x;
    x = x - 1;
    x = x - 1;   
    printf("%d  %d\n", m, n);

尽量别研究这些无实用价值的语句写法吧,呵呵

梦想拥有一台龙芯3A-4000
2014-05-07 00:25
蝌蚪变青蛙
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-4-26
收藏
得分:2 
别研究前自增和后自增的问题了。。编程的时候就不应该体现出这2个东西的差别。就像学C的时候别老纠结算法题。。因为以后不管学C++还是学JAVA还是C#,人家都把代码写好了,拿来用就行。等你把C的函数学完了你就会了解了。。人家把东西写好了,你拿来用就是,没必要自己想。。
我的C学习路程刚刚暂时的告一段落了,上面是自己的一点小经验,给楼主参考下。
2014-05-07 00:44
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:1 
楼上说的对。况且不同的系统,包含前自增和后自增的一个表达式可能有不同的结果。不要再在这上面花时间了。
2014-05-07 07:29
向1505057584
Rank: 2
等 级:论坛游民
帖 子:7
专家分:25
注 册:2014-5-6
收藏
得分:1 
因为自加的优先级高于+,括号的优先级的就不用说了,所以x先自加两次,在执行x+x,自减是在后面,所以在运算完本语句“;”之后才自减
2014-05-07 11:47
buddy_zhang
Rank: 2
等 级:论坛游民
帖 子:33
专家分:24
注 册:2014-5-7
收藏
得分:1 
感觉在从内存取值到寄存器的过程中会发生不同步的事件。。。。。。。
2014-05-07 12:28
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:1 
自增自减运算符固然有它的便利性,但最好不要写出那样的代码.  除了省下自己敲几个字符的时间和源码在硬盘上占据的空间外,对代码的可读性,可维护性和程序的运行来说都没有一点好处.

代码测试环境:  WinXP+C-Free5.0.
2014-05-07 20:26
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用buddy_zhang在2014-5-7 12:28:30的发言:

感觉在从内存取值到寄存器的过程中会发生不同步的事件。。。。。。。

多线程的时候是会有同步问题
2014-05-08 12:53
快速回复:请讲一下 m,n 的值为什么都是 14 ???
数据加载中...
 
   



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

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