繁体   English   中英

C整数和浮点除法输出

[英]C integer and float division output

有人可以解释以下代码的输出吗: http : //cpp.sh/9dy44

为什么最后一行总是0.17?

float a = 17, b = 100;

printf("%f\n", 17/100);
printf("%f\n", a/b);
printf("%f\n", 17/b);
printf("%f\n", 17.0f/b);
printf("%f\n", a/100);
printf("%f\n", a/100.0f);
printf("%f\n", 5/100);

输出

0.000000
0.170000
0.170000
0.170000
0.170000
0.170000
0.170000

这称为Undefined Behaviour ,不要试图理解为什么会这样,因为顾名思义,它是undefined 发生未定义行为的原因是,您尝试打印双精度型,但要传递两个整数。 请注意,您还会收到警告:

14:25:警告:格式'%f'期望类型为'double'的参数,但是参数2的类型为'int'[-Wformat =]

将最后一行更改为此:

    printf("%f\n", 5.0/100);

并且它将按预期工作。

因为您正在除整数,然后尝试打印(整数结果为)浮点值

尝试这个

// Example program
#include <stdio.h>

int main()
{
    float a = 17, b = 100;

    printf("%f\n", 17.0/100);
    printf("%f\n", a/b);
    printf("%f\n", 17/b);
    printf("%f\n", 17.0f/b);
    printf("%f\n", a/100);
    printf("%f\n", a/100.0f);
    printf("%f\n", 5.00/100);

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM