【发布时间】:2014-09-01 15:32:30
【问题描述】:
我正在学习 C++ 语言,我对类型转换有些疑问,你能解释一下在这样的表达式中会发生什么吗:
unsigned int u = 10;
int a = -42;
std::cout << u - a << std::endl;
在这里我知道,如果我在有两个数学运算符时应用规则,结果将是 52。但我想知道当编译器将 a 转换为无符号值时会创建一个无符号类型的临时值时会发生什么,之后会发生什么?现在的表达式应该是 10 -4294967254。
【问题讨论】:
-
@dandan78 我想了解编译器是如何在底层工作的
-
@dandan78:有时这可能很幼稚;特别是如果计算的任何方面未定义。
-
第 1 步:获得一份 C++ 或 C 标准(最新草案免费)并检查。第 2 步:您决定永远无法记住规则并避免将来发生此类事情。
-
@gnasher729:+1,确实是个好建议。
-
@dandan78:C/C++ 用户的每 10 个误解中,大约有 9 个源于尝试、看到然后误解所看到的内容。
标签: c++ expression unsigned built-in-types