gpt4 book ai didi

c - C 程序中预增量运算符的行为

转载 作者:太空狗 更新时间:2023-10-29 15:39:15 26 4
gpt4 key购买 nike

我正在运行以下 C 代码:

#define cube(x) (x*x*x)
void main()
{
int x=2,y;
y=cube(++x);
printf("%d %d",++x,y);
}

我期待的结果是

6,60

但它给出了不同的结果。我想我对预处理器有误解。我认为代码将类似于

void main()
{
int x=2,y;
y=++x*++x*++x;
printf("%d %d",++x,y);
}

如有错误请指正

我将结果解释为3*4*5=60
但它即将到来 125

最佳答案

您定义了一个宏,用作简单的字符串替换,因此呈现的翻译是正确的。

但是,子表达式的执行顺序是未定义的,它们可以是交错的,这会导致未定义的行为

关于c - C 程序中预增量运算符的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329814/

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