c – 宏输出说明
发布时间:2020-12-16 09:47:08 所属栏目:百科 来源:网络整理
导读:有人可以解释这个程序的输出 – #includestdio.h#includeconio.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)); retur
有人可以解释这个程序的输出 –
#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对其应用#时,它已经被扩展. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |