大家好,我試圖從C語言編程書的問題由Brian W. Kernighan的(作者),丹尼斯·裏奇M.(作者)。該手冊提供的代碼對於基本的逆波蘭計算器,但我不明白#define NUMBER '0'
如何與switch語句一起工作:C編程switch語句找到一個數字或字母
它如何能夠捕獲所有的數字,儘管我們沒有每個數字的情況。接下來的問題還要求我處理像sin
,cos
或pow
這樣的案例。我假設也有類似的方式來做到這一點,但如果解釋會幫助我更好。
的getop
得到下一個操作或數字操作數,push
和pop
是正規堆棧功能和atof
將ASCII轉換浮動。
#define NUMBER '0'
int type;
double op2;
char s[100];
while ((type = getop(s)) != EOF) {
switch (type) {
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() * pop());
break;
case '-':
op2 = pop();
push(pop() - op2);
break;
case '/':
op2 = pop();
if (op2 != 0.0)
push(pop()/op2);
else
printf("error: zero divisor\n");
break;
case '%':
op2 = pop();
if (op2 != 0.0)
push((int)pop() % (int)op2);
else
printf("error: division by zero\n");
break;
case '\n':
printf("\t%.8g\n", pop());
break;
default:
printf("error: unknown command %s\n", s);
break;
}
}
return 0;
}
我猜'getop()''返回如果NUMBER'其參數's'恰好是數字。 – Hasturkun
看看'開關(類型)'行,直到啓示來臨。 –
@Hasturkun是啊,我看到了什麼發生了感謝。 – cv14