小编web*_* WM的帖子

为什么在 C/C++ 中不能用常量替换变量?

这是一个非常简单的 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++ 编译器测试了该示例。

我预计结果是相同的。

谢谢您的回答,让我们忘记打印部分。可以理解,它是未定义的,因此各个值可能会有所不同。

c c++ math

0
推荐指数
1
解决办法
252
查看次数

标签 统计

c ×1

c++ ×1

math ×1