c语言中的自增自减问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:04:05
#include "stdio.h"
void main ()
{
int i=10;
printf("%d,%d,%d\n",++i,--i,-i++);
}
在VC++中运行结果为10,9,-10
------------------------------------
我一直没弄懂中间那个9是怎么算出来的?不论从左还是从右算我觉得不该是9啊,就算从右算嘛,最后一个-10自增1后也该是-9啊,-9再自减1该-10啊,怎么弄出正9来了嘛;不好意思,我只是一个初学者,看了谭浩强的c程序第三版也没搞懂,所以到网上来请教一下,望大家不吝赐教哈.谢谢...
-i++中的"-"并不改变i的值,所以输出"-i++"后i值仍然是10,再自减,输出9,最后自增,输出10
------------------
看了你的回答虽然没有茅塞顿开,但也有点似懂非懂,那这个语句printf("%d,%d,%d\n",++i,--i,-i++); 的运算过程是不是每次只代入i的值,而不是先运算出-i++值再代入 --i;而每次运算代入的仅是i值.然后从右到左依次代入i进行运算.?

很直接了当的告诉你,这个无意义的运算在不同的编译器上可能会有两种不同的结果.
都已经告诉你了...

有从左往右,也有从右往左,难道还不明白吗?

这取决于编译器 此类问题是毫无意义的.

因为[像你这样公式的输出] → [他的所输出的值取决于你用什么样的编译器] ~

你还不明白那就真是说不通了,只能说: 无意义

茅厕盾开啊,呵呵,大多数的API函数都是从右到做计算的,懂了没
-i++ 优先级一样是从有到左 后置加是先拿数据在加前置是先加在那数据

-i++中的"-"并不改变i的值,所以输出"-i++"后i值仍然是10,再自减,输出9,最后自增,输出10

正确,C中只有赋值号"="可以改变变量的值