2012-08-09 76 views
-2

海合会(GCC)4.6.3 C89不能突破的做while循环

你好,

我有以下do..while循环

#define NUMBER_DX_CHANNELS 4 

do { 
/* some some processing here */ 
i++; 
dx_channels++; 
} while((dx_channels > CHANNELS_PER_BOARD) || (i < number_fx_resources)); 

出于某种原因在达到number_fx_resources之前,dx_channels应该先达到4。但是,它绝不会脱离dx_channels> CHANNEL_PER_BOARD。

我可以使用if语句,但是会添加一行额外的代码。

难道我做错了什么吗?是因为我在测试2个条件吗?

非常感谢您的任何建议,

+1

你或许想打破,如果任何一个条件是假的?在你的情况下,如果任何一个都是真的,你就继续循环。 – Shahbaz 2012-08-09 10:34:57

+3

你开始使用'dx_channels'的哪个值?数起来,做'while ..>'''听起来很奇怪。 – ShiDoiSi 2012-08-09 10:35:24

+1

它会循环_while_'dx_channels'比'CHANNELS_PER_BOARD'更大__。我认为你的意思是相反的。 – 2012-08-09 10:35:30

回答

3

您需要:注意while((dx_channels < CHANNELS_PER_BOARD) && (i < number_fx_resources));

:中&&代替||