BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


有关于x++的一个问题
首页 » 论坛 » C/C++ »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
zeus82
侠客



UID:589920
注册:2007-7-20
最后登录: 2008-09-09
帖子:35
精华:0

可用积分:61 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-7-24 09:32 
int x = 5;
x = x++
结果是x = 5,我看到的一个解释是先把寄存器中x的值放回内存,然后寄存器中的值加1,所以内存中的x还是原来的值。
但下面这个我就不明白了
int x = 5;
x = x+++2;
结果是x = 8,其执行过程我觉得应该是将寄存器中的x加2然后放回内存,最后寄存器中的值加1,没有放回内存就像上面一样,结果应该为7啊。

谁能给详细的讲解一下呢?



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
piaoyizu   帅哥 (123)
风云使者
得之我兴,不得我命


CU奥运火炬传递手2008
UID:439530
注册:2006-7-7
最后登录: 2008-09-29
帖子:651
精华:1

可用积分:81 (白手起家)
信誉积分:105
专家积分:0 (本版:0)
空间积分:2
推广积分:0

来自:上海
状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2008-7-24 09:35 
x = x++; 这个是先把x的值赋给x, 然后x再++;
下边这个不知道怎么讲了.



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我的舞伴叫做风,我在风中尽情的起舞,不在乎意任何的嘲笑.所有人的眼神都不曾令我脚步凌乱,因为我的心早已随风而去.心中唯一的波澜,那是风的痕迹.-[-~~~~!!!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
tigerajs (快乐雨天)
大天使


CU奥运火炬传递手2008
UID:386864
注册:2006-3-15
最后登录: 2008-10-07
帖子:1596
精华:0

可用积分:2326 (小富即安)
信誉积分:100
专家积分:0 (本版:0)
空间积分:4
推广积分:2509

状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2008-7-24 09:36 
回复 #1 zeus82 的帖子

搬着板凳等解释



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 net_robber   帅哥 (迷茫的羔羊)
版主-精灵使
堕落的鬼魂




UID:159572
注册:2004-5-20
最后登录: 2008-10-07
帖子:3487
精华:4

可用积分:5223 (富足长乐)
信誉积分:99
专家积分:10 (本版:5)
空间积分:0
推广积分:7

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2008-7-24 09:44 
楼主有实际测试过么???

$ cat test.c
#include <stdio.h>
int main(void)
{
        int x=5;
        x=x++;
        printf("%d\n",x);
}
$ gcc test.c
$ ./a.out
6




您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________



新领域全方位传媒。
打破以往传统传媒单一方式让虚拟与现实完美结合。
引领新一代 《立体网络传媒文化》 。
异度圣洁诚挚的邀请您参加到我们的《彗星系统》中,与我们一起拥抱明天!
有兴趣的请联系我ZhangQuan@TimeCtrl.net




积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gigabyte   帅哥
精灵使
哟哟


CU奥运火炬传递手2008
UID:651985
注册:2007-12-8
最后登录: 2008-10-03
帖子:3404
精华:6

可用积分:3242 (小富即安)
信誉积分:5
专家积分:10 (本版:0)
空间积分:802
推广积分:7

状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2008-7-24 09:45 
#include <stdio.h>
int main(void)
{
        int x=5;
        printf("%d\n",x++);
}

应该用这个



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

冠切云之崔嵬 被明月兮佩宝璐
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
aple_smx   帅哥 (Bowe)
精灵




UID:275227
注册:2005-6-1
最后登录: 2008-08-26
帖子:197
精华:0

可用积分:740 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2008-7-24 09:50 
回复 #1 zeus82 的帖子

> CC -o test test.cc
> ./test
7
> cat test.cc
#include <stdio.h>
int main(void)
{
        int x=5;
        x=x+++2;
        printf("%d\n",x);
}



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
piaoyizu   帅哥 (123)
风云使者
得之我兴,不得我命


CU奥运火炬传递手2008
UID:439530
注册:2006-7-7
最后登录: 2008-09-29
帖子:651
精华:1

可用积分:81 (白手起家)
信誉积分:105
专家积分:0 (本版:0)
空间积分:2
推广积分:0

来自:上海
状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2008-7-24 09:52 


QUOTE:
原帖由 aple_smx 于 2008-7-24 09:50 AM 发表
> CC -o test test.cc
> ./test
7
> cat test.cc
#include
int main(void)
{
        int x=5;
        x=x+++2;
...

这个是这样子的么, 我没测哦, 只是有点不解.
x = 5;

x = x+++2;

是不是这样算, x = x + 2; 然后x再++(因为调用printf的时候x++了); 这样结果还是得8啊.
请指教.

[ 本帖最后由 piaoyizu 于 2008-7-24 09:54 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我的舞伴叫做风,我在风中尽情的起舞,不在乎意任何的嘲笑.所有人的眼神都不曾令我脚步凌乱,因为我的心早已随风而去.心中唯一的波澜,那是风的痕迹.-[-~~~~!!!
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
wmytch
圣骑士




UID:174765
注册:2004-8-3
最后登录: 2008-09-28
帖子:131
精华:0

可用积分:143 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2008-7-24 09:53 
回复 #1 zeus82 的帖子

做俯卧撑等着看lz挨骂



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gigabyte   帅哥
精灵使
哟哟


CU奥运火炬传递手2008
UID:651985
注册:2007-12-8
最后登录: 2008-10-03
帖子:3404
精华:6

可用积分:3242 (小富即安)
信誉积分:5
专家积分:10 (本版:0)
空间积分:802
推广积分:7

状态:...离线...

[个人空间] [短信] [博客]


9楼 发表于 2008-7-24 09:53 
我的解释:

#include<stdio.h>

int main()
{
int x = 5;

printf("%d\n", x = x+++2);
printf("x=%d\n", x);
return 0;
}

[root@rh9 tmp]# ./a.out
7
x=8

大家看懂了么,呵呵



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

冠切云之崔嵬 被明月兮佩宝璐
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
gigabyte   帅哥
精灵使
哟哟


CU奥运火炬传递手2008
UID:651985
注册:2007-12-8
最后登录: 2008-10-03
帖子:3404
精华:6

可用积分:3242 (小富即安)
信誉积分:5
专家积分:10 (本版:0)
空间积分:802
推广积分:7

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2008-7-24 09:56 
printf("%d\n", x = x+++2);   //这句先x++,x还是5 + 2 =7
printf("x=%d\n", x);              //之前的x++生效,x加一,故x=8




您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

冠切云之崔嵬 被明月兮佩宝璐
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » C/C++ »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.043853 second(s), 4 queries , Gzip enabled