宏输出说明
Macro output explanation
有人能解释一下这个程序的输出吗-
#include<stdio.h>
#include<conio.h>
#define FUDGE(k) k+3.14159
#define PR(a) printf(#a" = %dt ",(int)(a))
#define PRINT(a) PR(a);putchar('n')
int main()
{
int x=2;
PRINT(x*FUDGE(2));
printf(n);
PR(x*FUDGE(2));
return 0;
}
输出-
x*2+3.14159 = 7
x*FUDGE(2) = 7
为什么FUDGE(2)
是在第二个语句中打印的,而不是在第一个语句中。
#
运算符很奇怪。它在展开参数之前工作。
因此,当调用PR(x*FUDGE(2))
时,在扩展FUDGE
之前,将#
应用于x*FUDGE(2)
然而,在PRINT(x*FUDGE(2))
中,FUDGE
在传递给PR
之前进行了扩展。当PR
将#
应用于它时,它已经被扩展。
因为在第一个例子中,您使用PRINT
,它在"调用"PR
时扩展参数。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 当使用通配符和null指针调用函数时,对输出的说明
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- C++ "#include"输出说明
- 使用向量(STL)时,未定义的行为,请说明理性背后的以下代码输出
- 宏输出说明
- 一个数字和字段宽度的格式化输出,C++标准在哪里说明它
- c++代码输出说明