面试宏扩展

Posted Z上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试宏扩展相关的知识,希望对你有一定的参考价值。

很郁闷碰到了一个考宏扩展的例子:   #define DOUBLE(x) (x+x)  i = 8 * DOUBLE(8); 让求解i的值,我个人认为值应该是128.但是面试官说不对,感觉很怪异,然后我在一个VS10的工程里测试了下,发下:

结果是对的啊?到底出问题在哪里呢,我想面试官应该想考我们宏替换的原理吧,按题意应该是8*8+8 = 72;难道是因为我用的vc的工程?

切换一个新控制台程序试试:

真是见鬼了,是否C++版本的问题,或者我编译器的问题呢?

记得那道题用的是大括号,可在VS2010上根本编译都不过,是否是因为VS对C++11标准的部分支持呢?

周一用VC6.0试试!

 唉,眼睛有问题,感觉应该是自己看错了或者记错了,人家的题目有可能是不带括号的,这样直接替换就是72;

 #define DOUBLE(x) x+x

以上是关于面试宏扩展的主要内容,如果未能解决你的问题,请参考以下文章

面试题 — 考察宏任务,promise

C语言面试题第2题:宏参数的连接

C语言---面试之预处理篇

关于面试中异步与延时 执行顺序的预期结果问题

来玩,前端性能优化(+面试必问:宏任务和微任务)

来玩,前端性能优化(+面试必问:宏任务和微任务)