[英]C: Problem with while loop
我試圖解決這個while循環,但一直遇到錯誤。 基本上,假設我有4只烏龜,每賣出一只烏龜,我都會得到一個硬幣。 當我達到0時,我要打印我有多少個硬幣。 我得到的錯誤是這個,
用作真值的賦值周圍的錯誤括號使:*** [cents]錯誤1
這是代碼:
while (turtles > 0) {
turtles = turtles - 1;
coin++;
if (turtles = 0)
printf("Now you have %d coins\n", coin);
}
很高興您的編譯器給您該錯誤。
您在if條件中為turtles
分配了 0:
if (turtles = 0)
我想您正在嘗試測試它是否等於0。那么它應該是兩個等於==
的相等性。
if (turtles == 0)
您的if語句應為:
if(turtles == 0)
目前,它包含一個分配,這就是為什么您會收到錯誤的原因。
您可能要考慮在while循環終止后放置打印行,因為硬幣似乎沒有作用於while循環。 如果海龜在代碼塊的開頭總是是正數,那么就不需要if語句,因為while循環的終止子句意味着海龜退出時為0。
如果您仍然需要if語句(例如,因為海龜可能從-1開始),那么將if語句移出while子句可能仍會為您帶來一點性能提升,因為不需要執行評估對於每個循環迭代。 在您的特定情況下,考慮到迭代次數很少,其影響將是最小的(編譯器甚至可能會為您優化它),但這是您將來可能要考慮的事情。
while (turtles > 0) {
turtles = turtles - 1;
coin++;
}
if (turtles == 0) // not needed if turtles is unsigned
printf("Now you have %d coins\n", coin);
if (turtles = 0)
printf("Now you have %d coins\n", coin);
賦值運算符始終將0分配給turtles
。 結果將是布爾值[即false(在這種情況下為false)],並且您將永遠不會得到打印出來的字符串。
您的意思是if (turtles == 0)
而不是if (turtles = 0)
。
我想您的if條件有問題。 您所陳述的條件仍然是錯誤的。 它應該是 :
if (turtles == 0)
您只需將0分配給海龜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.