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