gpt4 book ai didi

coercion - 其中哪一个是强制的例子

转载 作者:行者123 更新时间:2023-12-02 05:03:53 25 4
gpt4 key购买 nike

一直在琢磨一道关于强制的选择题。 4 个示例 a、b、c 或 d 之一是强制转换的示例。我将其缩小为 A 或 B。但我在两者之间做出选择时遇到了问题。请有人解释为什么一个是强制,一个不是。

一个)

string s="tomat";
char c='o';
s=s+c;

我认为 A 可能是正确的,因为我们添加了两种不同的类型,即字符和字符串。这意味着 c 被提升为字符串,因此是强制转换。

B)

double x=1.0;
double y=2.0;
int i=(int)(x+y);

我还认为 B 是正确答案,因为 double (x+y) 被转换为一个 int 以放入 i。但我认为这可能是错误的,因为它是通过使用 (int) 主动完成的,而不是被动地完成的,例如“int i = x + y”

我将列出其他两个选项,尽管我认为这两个选项都不是正确答案

C)

char A=0x20;
A = A << 1 | 0x01;
cout << A << endl;

D)

double x=1.0;
double y=x+1;
return 0;

我不只是在寻找答案,而是在寻找解释。我读过很多关于强制的东西,A 和 B 看起来都是正确的答案。那么为什么一个正确而另一个不正确。

最佳答案

我实际上认为它是 B。即使有明确的 (int),它仍然是类型强制(只是不是自动类型强制)。您正在将浮点值(可能存储为 IEEE 浮点值)转换为整数值(可能存储在二进制补码中)。

而 A 只是将一个字符连接到一个字符串,其中字符串只是一个以空字符结尾的字符数组。那里没有数据类型转换,只有一点内存操作。

虽然我可能是错的。

编辑:我不得不同意 Parris 的观点。鉴于这是 C++ 字符串而不是 C 字符数组(我的错误),A 中的字符可能被强制转换为字符串。

关于coercion - 其中哪一个是强制的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792443/

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