gpt4 book ai didi

c - 'define'使用规则

转载 作者:行者123 更新时间:2023-11-30 21:35:23 24 4
gpt4 key购买 nike

为什么b是1

#define P1(x) x+x
#define P2(x) 2*P1(x)
int a=P1(1)?1:0;
int b=P2(a)&a;

我尝试简单地输入1,对我来说它似乎返回b=0,#define有什么规则吗?它们不就像 c 中的函数一样“起作用”吗?

最佳答案

#define P1(x) x+x
#define P2(x) 2*P1(x)
int a=P1(1)?1:0;
int b=P2(a)&a;

代码替换后,它将如下所示:

int a=1+1?1:0;
int b=2*a+a&a;

由于 1+1 不是 falsea 将是 1,因此:

int b=2*1+1&1 

为了清楚起见,我将用括号书写(参见 operator precedence ):

int b=((2*1)+1)&1

这相当于:

int b=3&1 

这相当于:

int b=0b0011 & 0b0001 

这相当于:

int b=0b0001 

这意味着b=1

关于c - 'define'使用规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com