2014-12-30 65 views
-1

在for循環的第二部分,即第一個分號後,我們做條件檢查(比如說我小於n)。如果我們通常刪除條件部分,它會進入無限循環,但在這裏它顯示運行時錯誤,並且如果我們只是寫入沒有索引i的exp [],它會給出編譯器錯誤,那麼exp [i]在這裏和怎樣檢查是否正在進行?條件檢查inFor循環

int infixToPostfix(char* exp) 
{ 
int i,k; 
for (i = 0, k = -1; exp[i]; ++i) 
.... 
.... 
} 
int main() 
{ 
char exp[] = "a+b*(c^d-e)^(f+g*h)-i"; 
infixToPostfix(exp); 
return 0; 
} 

回答

0

考慮沒有訪問衝突,expchar指針,exp[i]i+ichar元素的值。

接下來,exp[i]用於條件檢查。即0 for false,non-zero for true

+0

因此exp [i]計算爲0或非零。那麼你是指a,+,並且所有運算符和操作數都是非零的,因此它運行。我們主要將exp傳遞給infixToPostfix,並且當我們傳遞值的時候'\ o'字符被附加到它上面,這就是當它到達結尾時它終止的原因嗎? – Stack

+0

@stack正確。空終止符ascii值爲0. –

+0

所以基本上我們比較所有字符的ASCII值,或者因爲它們是字符,我們不會將它們轉換爲ASCII,我們只對\ 0做它?我的意思是說,如果我傳遞一個整數說a + b * 2或其他的東西,然後2將被轉換爲ascii,然後將檢查條件? – Stack