看板 Soft_Job 關於我們 聯絡資訊
※ 引述《fanntone (我是胖子)》之銘言: : ※ 引述《hanck ( )》之銘言: : : 今兒個去MTK面試寫考卷看到兩題題目想跟大家請教一下 : : 1. : : extern void func1(void); : : extern void func2(void); : : extern void func3(void); : : extern void func4(void); : : extern void func5(void); : : void main(int n) : : { : : if n==1 execute func1; : : if n==2 execute func2; : : if n==3 execute func3; : : if n==4 execute func4; : : if n==5 execute func5; : : } : : 保證 n 一定是上面五個數字之一 : : 不能用if 和 switch case , 請用你認為最快的方法實作main 很久沒寫 C 了,不確定是不是最快的方法…… typedef void (*callback)(void); int main(int argc, char ** args) { int n = 1; callback funcArray[6] = {NULL, func1, func2, func3, func4, func5}; funcArray[n](); } : : 2. : : extern void func1(void); : : extern void func2(void); : : extern void func3(void); : : extern void func4(void); : : extern void func5(void); : : void main(int n) : : { : : if n==33 execute func1; : : if n==67 execute func2; : : if n==324 execute func3; : : if n==231 execute func4; : : if n==687 execute func5; : : } : : 保證 n 一定是上面五個數字之一 : : 使用if, 請用你認為最快的方法實作main : : 這兩題難度都是標記困難,所以我想第二題應該不會只是單純用if else : : 而第一題無法下手......不知道有沒有高手指導一下 第二題在一定要用 if 的條件下,我還是覺得直接 if (n == 33) { .... } else if (n == 67) { .... } 最快耶? 因為一定要用 if,所以 if 指令 (JMP) 本身的 instruction cycle 可 以不計。 然後如果是用 == 的話,不是一個 CMP 的 CPU 指令就完事了嗎?相較之 下做其他運算不會更耗時嗎? -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://brianhsu.moe 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.173.41 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1447809976.A.612.html ※ 編輯: brianhsu (61.228.173.41), 11/18/2015 09:37:21 ※ 編輯: brianhsu (61.228.173.41), 11/18/2015 09:38:53
gmd93: 受教了 11/18 09:40
manlike: 但是他有說可以用 else 嗎? 11/18 09:54
lovdkkkk: 不能用 else 的話可以用 return? 11/18 15:56