gpt4 book ai didi

c - 当您在 C 中将两种不同的类型相加时会发生什么?

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

给定以下代码:

int foo = 5;
int *foo_ptr = &foo;
return foo_ptr + foo;

返回类型是指针还是整数?更一般地说,编译器在将不同类型相加时会做什么?

最佳答案

在 C 中,两种不同数值类型的求和涉及首先提升参数以使类型相同,然后相加。精确的算法在 C11 标准的 §6.3.1.8“通常的算术转换”中有所描述,您可以在 cppreference 上找到摘要。 (C++ 和 C 标准在这一点上是相同的。)基本上,该算法是选择两种类型中较宽的浮点类型,或者如果两者都不是浮点,则选择最窄的整数类型至少与int 是两种类型的超集。

向指针p + ii + p 添加一个整数与&p[i](或 &i[p],这是相同的)。计算是:

&(char*)p + i * (sizeof *p)

如果 pvoid*,那是不可能的。

关于c - 当您在 C 中将两种不同的类型相加时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28756780/

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