注册 登录
编程论坛 C++教室

新手求助关于"++" "--"的理解

quanquan33 发布于 2007-04-14 11:20, 528 次点击
由于我是非计算机专业,自学的,所以没有老师请教,只有请教大家了,书看到这里实在理解不来,请指点一下.
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的.
谢谢!
9 回复
#2
friskyliu2007-04-14 11:33
y = 3 + 4 + 5
z = 5 + 4 + 3

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

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

#3
PcrazyC2007-04-14 11:33
这个不好说,不同的编译器可能有不同的结果,最好不要写这种式子

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


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

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

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

#5
yuyunliuhen2007-04-14 11:54
以下是引用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编辑过]

#6
quanquan332007-04-14 12:04

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

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

#7
IPV62007-04-15 20:24

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

#8
ludeng2007-04-15 22:50
按照我的做法结果为:
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啊?
请高手知道一下哈!!!!
谢谢哈
#9
I喜欢c2007-04-15 23:21
这样的题~``没必要细究...
#10
jiushiwo2007-04-16 10:07
看看
1