/* 用跳轉表實現簡易計算器 */
#include#include#include#define num 10
double add(double a, double b)
double sub(double a, double b)
double mul(double a, double b)
double divide(double a, double b)
double compare_max(double a, double b)
double compare_min(double a, double b)
int search_keyword( char const * const desired_word, char const *keyword_table)
return -1;
}/* 定義指標陣列,用作儲存關鍵字的表。在表的末尾加上null指標,則查詢時無需知道表的長度。 */
char const *oper_sequence = ;
/* oper_func是個陣列,其中元素的型別是函式指標,函式返回值是double型別 */
double (*oper_func)(double, double) = ;
int main()
; int seq = 0;
double data1 = 0;
double data2 = 0;
double result = 0;
printf("operator:");
/* 將輸入的操作符存入oper陣列 */
scanf("%s", oper);
seq = search_keyword(oper, oper_sequence);
/* 沒有找到對應的操作符時的錯誤處理 */
if(seq < 0)
printf("請輸入引數data1,data2:");
scanf("%lf,%lf", &data1, &data2);
result = oper_func[seq](data1,data2);
printf("result is: %f\n", result);
return 0;
}
一些跳轉語句的用法例項
while 在條件為ture的情況下,會重複執行迴圈體內的語句,直到條件為false break 退出最近的封閉switch while for foreach continue 將控制傳遞給下乙個while for foreach,繼續執行下一次迴圈 return 將控制返回到出現return語句...
switch跳轉表分析
file 2015 1026 exam 1 2 main.c brief switch case分析 401139h 為switch 跳轉表首位址 ecx 為 casen,casen 是作過優化的n從 0開始到4結束 在memory 視窗檢視 switch 跳轉表首位址401139h 每個位址是4個...
switch的跳轉表
1.跳轉表是否是隨機生成的?是隨機生成的 2.跳轉表的工作原理?3.跳轉表中每個case之間的關係?跳躍表的性質 1.由很多層結構組成 2.每一層都是乙個有序的鍊錶,排列順序為由高層到底層,都至少包含兩個鍊錶節點,分別是前面的head節點和後面的nil節點 3.最底層的鍊錶包含了所有的元素 4.如果...