全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:910
推到 Plurk!
推到 Facebook!

++和--

答題得分者是:herbert2
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-30 15:39:45 IP:218.80.xxx.xxx 訂閱

[code cpp]
int main()
{

int i=8;
printf("%d\n%d\n%d\n%d\n", i,--i,i ,i--);
getchar();
return 0;
}

[/code]

结果从上到下为:8 7 7 8
搞不懂这个到底是怎么算出来了吗?有哪位大大可以帮我一步一步分析吗?如第一个, i 不是应该是9吗,怎么会是8 ?谢谢了。在线等答案。

------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-30 21:55:01 IP:211.72.xxx.xxx 訂閱
雖然 i 是先加 1, --i 是先 --1, i 是後 1, i-- 是後 -1;
但那是對一個 Statement 而言:
例如 i=8,
則 a[ i] 取得 a[9], 且完成後 i = 9.
但 a[i ] 取得 a[8], 且完成後 i = 9.
例如 i=8,
則 a[--i] 取得 a[7], 且完成後 i = 7.
而 a[i--] 取得 a[8], 且完成後 i = 7.
您在一個輸出中連續用此四個運算,
您可能認為應得到 9, 8, 8, 8, 但得 8, 7, 7, 8,
可能因 printf() 處理順序之故.
不要在一個 Statement 做此種連續運算即可避免.
試 Run 一下下列方式看看!
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int i = 8;
printf("%d\n",a[ i]); // 9
printf("%d\n",i); // 9
printf("%d\n",a[--i]); // 8
printf("%d\n",i); // 8
printf("%d\n",a[i ]); // 8
printf("%d\n",i); // 9
printf("%d\n",a[i--]); // 9
printf("%d\n",i); // 8

===================引 用 zhouying82 文 章===================
int main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n", i,--i,i ,i--);
getchar();
return 0;
}

结果从上到下为:8 7 7 8
搞不懂这个到底是怎么算出来了吗?有哪位大大可以帮我一步一步分析吗?如第一个, i 不是应该是9吗,怎么会是8 ?谢谢了。在线等答案。

系統時間:2024-05-20 6:29:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!