2013-12-16 142 views
1

大家好我想多個條件添加到一個做,而用代碼顯示爲語句,後跟做while循環,增加多個條件

do 

(switch case menu) 

while(choice!='X' && (NetworkPacket= 50; printf("No more network packets can be added"))); 

基本上,(一些代碼)部分的菜單系統要求用戶添加數據包,然後選擇!='x'允許用戶按x退出程序。但是當菜單允許它們循環時,我希望程序也限制用戶添加超過50個數據包,因此網絡數據包int = 50,則表示沒有更多數據包可以添加,但這似乎不起作用。

+0

請編輯您的文章,並重寫這個沒有那個尷尬的最後複合語句。它現在沒有多少意義。 – usr2564301

+0

它看起來像你試圖執行一個語句作爲條件的一部分。它可以完成,但它通常不被認爲是好的做法,因爲它往往會導致相當尷尬(和容易出錯的代碼)。 –

回答

1

試試這個

do 
{ 
    (switch case menu) 
    NetworkPacket++; 
} 

while(choice!='X' && (NetworkPacket >= 50? printf("No more network packets can be added"),0 : 1)); 
+0

錯誤:':'令牌之前的語法錯誤。另外我應該提到網絡數據包整數只是作爲計數器添加,所以每當用戶通過添加數據包的菜單循環時,它只會增加1 –

+0

@NabilAziz;沒有錯誤。查看[結果](http://ideone.com/HS6xZd)。 – haccks

+0

好吧,我的錯誤與一些額外的},但這似乎工作,感謝洞察力,但是什麼?和0:1呢? –

3

風格上,你的代碼會更容易閱讀,如果while聲明只有邏輯,像printf行動之外。您可以分離出部分是這樣的:

#define PACKET_LIMIT 50 
do { 
    (switch case menu) 
    //presumably NetworkPackets is being updated in here too 
} while ((choice != 'X') && (NetworkPackets < PACKET_LIMIT)); 

//now check why we exited 
if (NetworkPackets >= PACKET_LIMIT) { 
    printf("No more network packets can be added"); 
} 

使用的循環邏輯< PACKET_LIMIT允許在多個數據包可能會被循環體中添加的情況。