gpt4 book ai didi

c - 宏中的优先级(++x 与宏中的 x++)

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:45 24 4
gpt4 key购买 nike

我刚写了这段代码,却得到了我不理解的输出。

#include <stdio.h>
#define SQUERE(X) ((X)*(X))

int main(void) {
int s=5,i;
i=SQUERE(s); // option 1
i=SQUERE(s++); // option 2
i=SQUERE(++s); // option 3
printf("%d %d",i,s);
return 0;
}

宏中的第一个选项返回“25 5”——我完全理解。

第二个选项返回“30 7”,我不明白 - 为什么 s 是 7 而不是 6?为什么是 30 而不是 25?(首先是 s*s 然后是 s++)

第三个选项返回“49 7”——我也没有得到。在输出之前,我很乐意解释程序的步骤。

最佳答案

预处理器只是文本操作,您的代码扩展为:

i = (s) * (s);

i = (s++) * (s++);

i = (++s) * (++s);

最后两个都是未定义的行为。

关于c - 宏中的优先级(++x 与宏中的 x++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266955/

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