PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
Re: [問題] 有關巨集
作者:
v3dys6f3a3j5
(柳上上)
2016-03-16 11:11:50
※ 引述《d5123 (dd)》之銘言:
: #define CUBE(x) x*x*x
: int n = 3;
: CUBE(++n) = ?
: 我用電腦跑的結果是150,
: 但不知實際運算過程為何?
: 請板上高手賜教。
我在讀程式語言的時候也有遇到類似題目
我知道是++n*++n*++n
但我還是不知道為甚麼是150
我有看過13誡了 也爬過文 也看過精華區
真的找不到為甚麼
那三個數到底是甚麼 是?*?*?
這中間的運算過程是怎麼跑的
如果是5*5*6 這是怎麼加出來的
前面兩個加了兩次(n=5) 最後一個加三次(n=6)??
我真的有爬文 我看別人都是下面推文一點就通
我看推文看了半天 還是不懂 還是有哪一篇文章我漏掉了
作者:
nowar100
(拋磚引玉)
2016-03-16 11:13:00
undefined behavior 不需要找為什麼...
作者:
Frozenmouse
(ï¼Šå†°ä¹‹é¼ ï¼Š)
2016-03-16 11:31:00
一個先問是什麼就輸了的概念 (?
作者: suwako
2016-03-16 11:44:00
我猜測做運算前會先確認左右兩項 所以第一個運算左右兩邊的++n都會先做 這樣就會變成6*5*5了
作者:
Caesar08
(Caesar)
2016-03-16 12:19:00
你真的有看13誡? 你真的有認真看13誡?
作者:
nowar100
(拋磚引玉)
2016-03-16 12:27:00
如果你真的想知道為什麼 大概告訴你 common subexpressin 在 AST 還有後面優化階段,可能被各種組合方式亂兜所以可能每家compiler不同選項都會有不同結果所以 short answer: 不需要找為什麼
作者:
LPH66
(-6.2598534e+18f)
2016-03-16 13:24:00
本版
#1Em1oVzU
提供其中三種詳解這三種詳解都確實有不同語言或不同編譯器實作之
繼續閱讀
[問題] 資料結構的Unit Test問題
lovesnake
[閒聊] 是不是該有版主?
Caesar08
Re: [問題] C的經典計算機題目
povertytrap
[問題] 讀出檔案 fread
EngRookie
[問題] c語言 轉16進位 用%餘數
Neverfor
[問題] 如何include一個class
dedicationsh
[分享] C++17將有Parallelism Algorithm
Caesar08
[問題] 初學者要寫C++ GUI
jediko
[問題] 將OpenCL code轉為單一C function
kylan
[問題] 在 Windows user mode 讀寫硬體?
ptta
Links
booklink
Contact Us: admin [ a t ] ucptt.com