gpt4 book ai didi

c - 宏展开后的输出似乎不符合理解(可能是错误的理解)

转载 作者:行者123 更新时间:2023-11-30 19:08:36 26 4
gpt4 key购买 nike

您好,需要了解以下程序的执行步骤。

#include<stdio.h>
#define SQUARE(x) (x)*(x)
void main()
{
int i = 5;
printf("%d\n", SQUARE(++i));
}

据我了解,宏扩展如 (++i)*(++i)结果(7)*(6) = 42 但输出是 49我不明白为什么?

最佳答案

这正是宏的问题,如果你不注意,你最终会得到未定义的行为。请参阅Why are these constructs (using ++) undefined behavior?

(++i)*(++i) 是未定义的行为,结果可以是任何结果,包括爆炸您的计算机。

关于c - 宏展开后的输出似乎不符合理解(可能是错误的理解),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44867642/

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