加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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对其应用#时,它已经被扩展.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读