| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:新手求助关于"++" "--"的理解
只看楼主 加入收藏
quanquan33
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-14
收藏
 问题点数:0 回复次数:9 
新手求助关于"++" "--"的理解
由于我是非计算机专业,自学的,所以没有老师请教,只有请教大家了,书看到这里实在理解不来,请指点一下.
main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
是怎么算出x=2,y=12,z=12的.
谢谢!
搜索更多相关主题的帖子: 计算机专业 
2007-04-14 11:20
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 
y = 3 + 4 + 5
z = 5 + 4 + 3

是我没经过大脑思考的结果~~抱歉这种说法是错误的
下面的说法是对的
不同的编译器有不同的结果
我的出来的结果是2 10 12

[此贴子已经被作者于2007-4-14 11:47:36编辑过]

2007-04-14 11:33
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
这个不好说,不同的编译器可能有不同的结果,最好不要写这种式子

按照你的编译器可以是这样的


y=4+4+4=12(++在前面有两个,所以先对X进行两次自加,再代入,运算后,再对X进行一次自加),此时X=5;

z=4+4+4=12(——在前的只有一个,所以先对X进行一下自减,再代入,运算后再对X进行两次自减),此时X=2;

雁无留踪之意,水无取影之心
2007-04-14 11:33
friskyliu
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-7
收藏
得分:0 

a++是先保留a的值再自增
++a是先自增再计算新值
例:
#include<stdio.h>

void main()
{
int a = 5;

printf("a++=%d\n",a++); //先显示a的值再自增,就是说先输出a=5在增加到a=6

printf("++a=%d\n",++a); //先自增再显示a,a=6后自增后为7
}

//所以结果显示 5 7

2007-04-14 11:40
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
以下是引用quanquan33在2007-4-14 11:20:26的发言:
由于我是非计算机专业,自学的,所以没有老师请教,只有请教大家了,书看到这里实在理解不来,请指点一下.
main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
是怎么算出x=2,y=12,z=12的.
谢谢!

结果是x=2,y=10,z=12吧;你可以这样试一下,
#include<iostream>
using namespace std;
void main()
{
int x=2,y,z;
y=(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}

#include<iostream>
using namespace std;
void main()
{
int x=2,y,z;
y=(++x)+(x++);
z=(x--)+(--x)+(x--);

printf("x=%d,y=%d,z=%d\n",x,y,z);
}

#include<iostream>
using namespace std;
void main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}

看结果就知道了,++,--的用法我想LH应景讲的很清楚了

[此贴子已经被作者于2007-4-14 11:55:27编辑过]


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-14 11:54
quanquan33
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-14
收藏
得分:0 

我是用网上下载的Turbo c for windows 写的
我回电脑上理解下,先谢过

[此贴子已经被作者于2007-4-14 12:04:37编辑过]


2007-04-14 12:04
IPV6
Rank: 1
等 级:新手上路
威 望:2
帖 子:265
专家分:0
注 册:2006-9-7
收藏
得分:0 

往后面学习吧!C++的精髓在后面的章节里。


2007-04-15 20:24
ludeng
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-4-12
收藏
得分:0 
按照我的做法结果为:
X=2,Y=11,Z=11
y=(++x)+(x++)+(++x);是不是就等于y=3+3+5=11
z=(x--)+(--x)+(x--);是不是就等同于z=5+3+3=11
但是怎么运行的结果为:2 10 12啊???
y=(++x)+(x++)+(++x);和z=(x--)+(--x)+(x--);的运算顺序不是从左到右的吗??
首先经 ++x 后x=3,在经 x++ 后先取x=3的值进行计算,然后x在加1,x=4,最后经 ++x后,x=5。
那么y=(++x)+(x++)+(++x);不就是y=3+3+5吗??怎么运行的结果为10啊?
请高手知道一下哈!!!!
谢谢哈
2007-04-15 22:50
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
这样的题~``没必要细究...

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-15 23:21
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
收藏
得分:0 
看看

做你自己! everything will go! lanfei_1234@
2007-04-16 10:07
快速回复:新手求助关于"++" "--"的理解
数据加载中...
 
   



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

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