2012-08-09 83 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));

:中&&代替||