这是一个非常简单的 C/C++ 代码,这让我感到惊讶,因为它没有给出相同的结果。
float f = -123.123f;
unsigned u1 = -123.123f;
unsigned u2 = f;
printf("%d %d\n", u1, u2); // 0 -123
printf("%u %u\n", u1, u2); // 0 4294967173
Run Code Online (Sandbox Code Playgroud)
输出给出:
float f = -123.123f;
unsigned u1 = -123.123f;
unsigned u2 = f;
printf("%d %d\n", u1, u2); // 0 -123
printf("%u %u\n", u1, u2); // 0 4294967173
Run Code Online (Sandbox Code Playgroud)
为什么结果不会一样呢?
这是令人担忧的,因为具有相同含义的符号在语言中无法替换。
我在programiz.com 网站上使用C++ 编译器测试了该示例。
我预计结果是相同的。
谢谢您的回答,让我们忘记打印部分。可以理解,它是未定义的,因此各个值可能会有所不同。