2011-01-24 197 views
2
unsigned int i; 
for (i = 100; i <= 0; --i) 
    printf("%d\n",i); 
+4

準備好回答問題 – Anycorn 2011-01-24 23:19:23

+0

取決於你想要的代碼做什麼... – 2011-01-24 23:21:03

+2

歡迎來到StackOverflow – RichardTheKiwi 2011-01-24 23:21:22

回答

2

< = 0也許?因爲它是從一開始就false

For循環

  • INIT:I = 100
  • 測試:ⅰ< = 0 //假上第一遍

更改測試i > 0 (100次)

i >= 0(101次)連同聲明signed int i;,以便它採取行動ually減少到-1。一個無符號的int將從0到max-int(溢出)。

+3

你的意思是假` – swegi 2011-01-24 23:17:25

+0

`> = 0`是錯誤的。 – 2011-01-24 23:22:53

11

i >= 0在循環中的第二個條件,如果你想要再循環從100到0

也就是說,和其他人指出的那樣,你需要你的i定義更改爲有符號的整數(只是int),因爲當計數器是-1時,它會是其他正數,因爲你聲明它是unsigned int

10

由於i是無符號的,所以它會從不小於零。掉落unsigned。另外,請將<=替換爲>=

2

i <= 0;

i環路檢查是從不低於或-等於零。它的初始值是100.

2

從技術上講,沒有什麼是錯的代碼。我對= 0的測試很奇怪,因爲我是無符號的,但它在技術上是有效的,當我是0時是true,否則是false。在你的情況,我從來沒有碰巧是0.

7

由於i是無符號的,表達式i <= 0是可疑的,相當於i == 0

而且代碼不會打印任何內容,因爲條件i <= 0在它的第一次評估中是錯誤的。

0

如果你想讓它從100打印所有數字下降到0,那麼你需要

unsigned int i; 
for (i = 100; i >= 0; --i) 
    printf("%d\n",i); 

第一次你的循環在你的原碼跑,我是100測試「100 < = 0」失敗了,因此沒有任何顯示。

4

如果代碼應該什麼都不做,那沒什麼問題。

假設您希望它將循環索引i從100打印到1,則需要將i <= 0更改爲i > 0

因爲它是一個無符號整數,所以你不能使用i >= 0,因爲那會導致它無限循環。

2

我懷疑你的意思是測試是i > 0

相關問題