我似乎有這個'for'循環的一些問題,這是一個考試問題,我不明白爲什麼我的邏輯是不正確的。C - 基本For循環
int n = 1, r, i;
for(i=0; i<5; i++)
n *= 2;
r = n--;
查找此代碼運行後r和n的值。
這裏是我的這個邏輯(在紙面上,因此圖像鏈接): Image
正確的輸出。然而,N = 31且r = 32。爲什麼是這樣?我哪裏錯了?
我似乎有這個'for'循環的一些問題,這是一個考試問題,我不明白爲什麼我的邏輯是不正確的。C - 基本For循環
int n = 1, r, i;
for(i=0; i<5; i++)
n *= 2;
r = n--;
查找此代碼運行後r和n的值。
這裏是我的這個邏輯(在紙面上,因此圖像鏈接): Image
正確的輸出。然而,N = 31且r = 32。爲什麼是這樣?我哪裏錯了?
行r = n--;
在分配給r後遞減n。
這不是for
問題,而是--n
和n--
。
n--
作爲表達n--
的值第一返回n
,然後執行減法n <- n-1
。
--n
先做減法n <- n-1
,然後返回n
新價值的--n
int n = 1, r = 0, i;
for(i=0; i<=5; i++)
r *= 2;
n = r--;
下面是最終答案。去檢查它。希望能幫助到你。
由於'r'在最後一次減少之前被分配了'n'的值,所以不會將_rr初始化爲0,也不是必需的。刪除「我」的聲明是錯誤的。但是,爲什麼你想改變'for'語句的控制表達式呢?問題是關於爲什麼這段代碼分別產生32和31的'r'和'n'的最終值。 –
嗨,我只是更新了我的答案。謝謝 – JohnC
爲什麼它應該是'32'? –
因爲循環後n是32,並且n的值正在改變。然而,在執行n--之前,n存儲在32中的r中,然後減去n--。 –