簡體   English   中英

C:while循環問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM