【C语言学习笔记】关于pow在printf函数中的问题

    科技2026-04-17  2

    关于pow在printf函数中的"多面人"

    在“跳台阶”这道题中需要用到POW函数,并输出,结果我自测时发现了一个小问题。

    如果是

    int k = pow(2,n-1); printf ( "%d\n", k );

    输入n=4

    输出8(正确)

    如果改为

    printf ( "%d\n", pow(2,n-1) );

    输入n=4

    输出0(错误)

    再测试多组数据,发现当数据较小时输出值都为0,这是为什么呢?

    然后我又再修改了一下,进行了强制类型转换

    printf ( "%d\n", (int)(pow(2,n-1)) );

    输入n=4

    输出8

    再修改下

    printf ( "%f\n", pow(2,n-1) );

    输入n=4

    输出8.000000

    是不是心里已经有答案了?可以先思考下,下面揭晓


    是的,pow函数返回的是double型变量,用%d即用int型输出,根据double的储存原理和int的储存原理差距,导致前几个数对应的int都为0。

    Processed: 0.012, SQL: 9