main(){int i=8printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);}i的初值为8 第2行i加1后输出故为9; 第3行减1后输出故为8; 第4行输出i为8之后再加1(为9); 第5行输出i为9之后再减1(为8) ; 第6行输出-8之后再加1(为9); 第7行输出-9之后再减1(为8) 这是C语言书上的例子,我看不懂的是“第6行输出-8之后再加1(为9); 第7行输出-9之后再减1(为8) ”,输出-8再加1不是-7么?
"对äº-i++ä¸-i--è¿ç§è¡¨è¾¾å¼ï¼ä¸åçç¼è¯å¨æç¼è¯ç¯å¢å¯è½åå¤ä¸åç解é
æ ç¹æ®ç好çç¨åºåç¼ç¨é½ä¼å ä¸æ¬å·ï¼é²æ¢æ§ä¹ã"
è¿æ¯éç
æ£ç¡®ç说æ³æ¯, cä¸åçcompiler对ä¸ä¸ªå½æ°çåæ°æä¸åçè¿ç®é¡ºåº
æ以ä¸è¦æä¼å¯¹åéæ¬èº«é æå½±åç代ç ä½ä¸ºä¸ä¸ªå½æ°çåæ°
æå: è¿ä¸ªé®é¢æ²¡æè¯å®ççæ¡, ä½ éè¦æi++ i--è¿ç§ä»£ç ä»åæ°ä¸å离åºå». å®æ¯
æ ç¹æ®ç好çç¨åºåç¼ç¨é½ä¼å ä¸æ¬å·ï¼é²æ¢æ§ä¹ã"
è¿æ¯éç
æ£ç¡®ç说æ³æ¯, cä¸åçcompiler对ä¸ä¸ªå½æ°çåæ°æä¸åçè¿ç®é¡ºåº
æ以ä¸è¦æä¼å¯¹åéæ¬èº«é æå½±åç代ç ä½ä¸ºä¸ä¸ªå½æ°çåæ°
æå: è¿ä¸ªé®é¢æ²¡æè¯å®ççæ¡, ä½ éè¦æi++ i--è¿ç§ä»£ç ä»åæ°ä¸å离åºå». å®æ¯
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-07-15
第六行 输出的是 - (i++) 此时i++返回的是 i 的值,因此 输出-8 此时由于输出-i 并不是i的值 i 自增1后为9。
第七行 同样道理 输出的是 -(i--)
第七行 同样道理 输出的是 -(i--)
第2个回答 2012-07-14
对于-i++与-i--这种表达式,不同的编译器或编译环境可能各处不同的解释
无特殊癖好的程序员编程都会加上括号,防止歧义。
无特殊癖好的程序员编程都会加上括号,防止歧义。
第3个回答 2012-07-20
楼上已经说明了一些问题了,我学的是 C++,在DEV-C++平台下
int i=5;
1)cout<<++i; 输出的是 6
2) cout<<i++ 输出的是5 但是 i 在输出后变成了 6
也就是说, ++i 是先自加再用 i++ 是先用后再自加。
-- 的用是相同的
int i=5;
1)cout<<++i; 输出的是 6
2) cout<<i++ 输出的是5 但是 i 在输出后变成了 6
也就是说, ++i 是先自加再用 i++ 是先用后再自加。
-- 的用是相同的
第4个回答 2012-07-16
自加自减的符号的运算等级要高些。。