評價我在我的for循環中有一個問題,val
被打印出來作爲垃圾數據。我想知道是否這是因爲當我做num[(j+1)]
它實際上遞增變量J,如果是的話如何增加下一個元素而不影響for循環變量?嚴格從左至右在C
while ((scanf("%c",&userIN) == 1) && (userIN != '\n')) {
if(userIN >= '0' && userIN <= '9') {
num[i] = (userIN-'0');
}
else if ((userIN == '+')||(userIN == '-')||(userIN == '/')||(userIN == '*')) {
ops[i+1] = userIN;
}
i++;
}
for (j = 1; j <= i; j+2) {
if (ops[j] == '+') {
k = j;
k++;
num[k] = ((num[j]--) + (num[j]++));
printf("\n%d",(num[j]--));
val = num[k];
}
else if (ops[i] == '-') {
k = j;
k++;
num[k] = ((num[j]--) - (num[j]++));
val = num[k];
}
else if (ops[j] == '/') {
k = j;
k++;
num[k] = ((num[j]--)/(num[j]++));
val = num[k];
}
else if (ops[j] == '*') {
k = j;
k++;
num[k] = ((num[j]--) * (num[j]++));
val = num[k];
}
}
「當我做NUM [ (j + 1)]其實際增量J變量「爲什麼不張貼代碼來增加變量?注意不要導致[未定義的行爲](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior)! – MikeCAT
當輸入流用完時,'scanf'返回'EOF',這是一個負值。在有條件的情況下,這被認爲是真實的。 (while(scanf(「%c」,&userIN)== 1 && ...)'''更好的是,使用'getchar'而不是'scanf(「%c」,...)'。 –
你的問題與'j'變量的一些神奇的,不可見的增量無關。它們都是由不瞭解算法,也不是你自己的代碼造成的。從程序員不再理解他們自己的代碼的時候起,程序就沒有什麼好處了。在最後一次編輯時,問題和代碼都不再有任何意義。 – Lundin