股城网模拟炒股:一段简单的c语言代码

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 01:04:26
下面这段代码怎么会输出1呢?
main()
{
int z,x=4;
z=--x*--x*--x;
printf("%d\n",z);
}
那为什么w=5;y=w++*w++*w++语句执行完后结果为125呢?

++,--运算符号出现在变量前面时就必须在表达式计算之前就要加(减);相反,当出现在变量后面时就必须要在表达式计算完毕后再加(减)。弄清楚就好了。

--运算大于*运算,
所以X先进行三次--运算后变为1,再1*1*1=1

在我的电脑上执行结果是4,我的是Dev-CPP
这个不能按照一般的算的啦,当++、--运算符在同一表达式中连续出现3次或者以上的时候,执行的结果是由编译器来决定的,所以
你这道题目在不同的编译器上会有不同的结果,你可以自己分别在TC、VC和其它的编译器上试试。

这个问题很简单。。
当——出现在变量前时,优先级是最高的,所以,你那个程序,编译器会先做三次自减计算,结果为一,而你补充那个,系统会理解为W——,这个时候优先级没有乘法高,编译器先做×运算,再做W--运算,所以结果会是125,运算过后,W的值变为8。

--是先自减。3次自减后x=1。
z=1*1*1=1;
第2个:
y=5*5*5=125;3次++之后w=8;

和编译环境相关,在gcc下它被理解为
( (--z) * (--z) ) * (--z)
=> (2*2) * (--z)
=> 4 * 1
= 4

在你的环境里大概是被编译器解析成
(--z) * (--z) * (--z)
=>1 * 1 * 1
= 1