gpt4 book ai didi

C程序输出令人困惑

转载 作者:太空狗 更新时间:2023-10-29 17:14:12 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>
#define PROD(x) (x*x)
void main()
{
clrscr();
int p=3,k;
k=PROD(p+1); //here i think value 3+1=4 would be passed to macro
printf("\n%d",k);
getch();
}

在我看来,输出应该是16,但我得到了7

谁能告诉我为什么?

最佳答案

宏是扩展的,它们没有值传递给它们。在分配给 k 的语句中查看您的宏扩展到什么。

k=(p+1*p+1);

比起宏,更喜欢函数,如果你必须使用宏,你至少应该做的是将参数完全括起来。请注意,如果用户将它与具有副作用的表达式一起使用,即使这样也会带来潜在的意外。

#define PROD(x) ((x)*(x))

关于C程序输出令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128208/

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