gpt4 book ai didi

c++ - 在 C++ 中强制转换变量,还是只告诉编译器没问题

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:03 24 4
gpt4 key购买 nike

如果我有这段代码:

int A;
unsigned int B;
if (A==B) foo();

相比之下,编译器会提示混合类型。如果我像这样投 A:

if ((unsigned int) A==B) foo();

这是否指示编译器插入代码以将 A 从 int 转换为 unsigned int?或者它只是告诉编译器不要担心,忽略类型不匹配?


更新:如果这是不安全的(如下所述),我应该如何处理这种比较? (将 int 的内容分配给 unsigned int 以供以后比较也不安全)

更新:哇,有一些不同的答案(来自拥有数千个帖子的人)。我已经接受了看起来最好的,但任何阅读此问题的人都应该仔细阅读所有答案。

最佳答案

在转换时,至少在概念层面上,编译器将创建一个在转换表达式中指定类型的临时变量。

你可以测试这个表达式:

(unsigned int) A = B; // This time assignment is intended

将产生一个错误指向临时(const)变量的修改。

当然,编译器可以自由优化掉通过强制转换创建的任何临时变量。尽管如此,必须存在构建临时文件的有效方法。

关于c++ - 在 C++ 中强制转换变量,还是只告诉编译器没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182654/

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