gpt4 book ai didi

c++ - func() + func() 是未定义的行为吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:33 24 4
gpt4 key购买 nike

我只知道i = i++;未定义的行为,但是如果一个表达式中调用了两个或多个函数,并且所有功能是一样的。是未定义吗?例如:

int func(int a)
{
std::cout << a << std::endl;
return 0;
}

int main()
{
std::cout << func(0) + func(1) << std::endl;
return 0;
}

最佳答案

表达式 func(0) + func(1) 的行为被定义为结果将是通过调用 func 获得的结果的总和0 的参数和带有 1 参数的 func

但是,调用函数的顺序可能是implementation dependent ,尽管它可能未指定。也就是说,编译器可以生成等同于以下内容的代码:

int a = func(0);
int b = func(1);
int result = a + b;

或者它可以生成:

int a = func(1);
int b = func(0);
int result = a + b;

这通常不会成为问题,除非 func 具有依赖于调用顺序的副作用。

关于c++ - func() + func() 是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907342/

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