gpt4 book ai didi

c - 类 C 语言中的提升顺序

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:19 25 4
gpt4 key购买 nike

我们知道类型会得到提升。例如,如果您这样写:

int i = 2;
double d = 4.0;
double result = i / d;

. . .然后 int 将提升为 double,结果为 0.5。但是,我无法找到任何关于如果促销和评估顺序发生冲突会发生什么的信息(谷歌也很难)。例如:

int i = 2;
int j = 4;
double d = 1.0;
double result = d * i / j;

在此示例中,该值取决于促销发生的时间。如果 i 在除法之前被提升,那么结果将是 0.5,但是如果 i/j 的结果被提升,那么整数除法发生了,结果是 0.0

发生的结果是否定义明确?在 C++ 和其他 C 派生语言中是否相同?

最佳答案

Is the result of what happens well defined?

是的。

Is it the same in C++ and other C-derived languages?

对于 C++ - 是的。但是“C 派生语言” 没有那么明确的定义,所以很难回答。

评估顺序

d * i / j

(d * i) / j

因此,由于 d * i,首先 i 被提升为 double

然后,结果 (double) 必须除以 j,所以 j 被提升为 double。所以有两个促销事件

但是,对于

d + i / j

操作顺序不同。首先,i/j 使用整数运算完成除法,然后将结果提升为 double。所以只有一次促销

关于c - 类 C 语言中的提升顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25696216/

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