C整数和 float 除法输出

标签 c integer division

有人可以解释以下代码的输出: 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!。发生未定义的行为是因为您正在尝试打印 double 但您传递的是两个整数。请注意,您还会收到警告:

14:25: warning: format '%f' expects argument of type 'double', but argument 2 has type 'int' [-Wformat=]

将最后一行改为:

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

它会按预期工作。

关于C整数和 float 除法输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53031631/

相关文章:

c - 这个 << 语句是什么意思?

mysql - 1292 截断了不正确的 INTEGER 值

java - 如何在java中根据国际数字系统转换整数(数字格式)

Python 除法舍入

java - 如何除以得到十进制值?

c - 尝试运行代码的特定部分时程序崩溃

c - 将结构指针或数组作为函数参数传递

Java Integer.parseInt() 不适用于大数

mysql - 在选择错误中插入...选择除法运算符?

c - 从c中的文件流中获取数据