2013-12-16 99 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允许在多个数据包可能会被循环体中添加的情况。