[問題] 請問如何看這一行的執行順序?
圖:https://ideone.com/e.js/37Gfzz
此圖是用typecast把指向void的pointer轉型成指向一個function的pointer
在第16行: ( ( void(*)(void) )e.fn )();
我一直搞不太懂這裡operator的優先順序
()優先權最高,結合性是由左至右。如果是nested,最裡面的先執行
1.執行(*)的括號
2.執行(void)的括號
3.執行( void(*)(void) )的括號
4.執行( (void(*)(void) )e.fn )的括號
5.執行最右邊的()括號
情況: 少了第四行的括號,compile出現error。
解析: 也就是說加了第四行的括號,compiler才認為這整個東西是一個指向void(*)(void)
的pointer
問題: 為什麼一定要加第四個括號?
謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1526891960.A.C15.html
推
05/21 17:02,
7年前
, 1F
05/21 17:02, 1F
→
05/21 17:02,
7年前
, 2F
05/21 17:02, 2F
→
05/21 17:03,
7年前
, 3F
05/21 17:03, 3F
→
05/21 19:13,
7年前
, 4F
05/21 19:13, 4F
→
05/21 19:13,
7年前
, 5F
05/21 19:13, 5F
→
05/21 19:17,
7年前
, 6F
05/21 19:17, 6F
推
05/21 19:40,
7年前
, 7F
05/21 19:40, 7F
推
05/22 03:48,
7年前
, 8F
05/22 03:48, 8F
→
05/22 03:50,
7年前
, 9F
05/22 03:50, 9F
→
05/22 03:52,
7年前
, 10F
05/22 03:52, 10F
謝謝一樓 長知識惹
※ 編輯: zzss2003 (60.248.26.157), 05/22/2018 09:36:12
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章