c++ - 为什么 gcc 编译器将 pow(10,2) 输出为 99 而不是 100?

标签 c++ gcc

<分区>

#include <iostream.h>
#include <math.h>
int main()
{
    int j=2;
    int output;
    output=pow(10,j);
    cout<<output;
    return 0;
}

我将上面的代码写入 gcc 12 编译器,得到的输出是 99 而不是 100。我在各个站点上搜索时没有得到正确的原因。编译器有问题吗?

最佳答案

因为整数截断。 pow() 返回一个浮点值,由于浮点运算,它可能是 ~ 99.999...;然而,由于整数截断,甚至 99.999... 也会被截断为 99。

关于c++ - 为什么 gcc 编译器将 pow(10,2) 输出为 99 而不是 100?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25474351/

相关文章:

c++ - 解决循环依赖

c - 为什么位字段的类型会影响包含结构的大小?

optimization - 如果我启用 C 优化 -O2 或 -fstrict-overflow(-O1 很好),我的 C 程序会崩溃

ios - 结构填充编译标志

c++ - 在 Linux 中更改线程优先级和调度程序

c++ - 创建一个 1 像素的纹理问题。

c++ - unordered_map,为什么有些桶有超过 1 个元素甚至散列值都不同?

c++ - 整数文字末尾的 "L"是什么意思?

c - 一元 '*' 的无效类型参数(有 'int' )

c - Linux 的 gcc __attribute__((selectany)) 替代品?