当我try Print PreTopping时,即使在预先添加(浮动)之后,答案也始终是0.0000

int length, width;
printf("Please enter your pizza's length (cm): ");
scanf(" %d", &length);
printf("Please enter your pizzas width (cm): ");
scanf(" %d", &width);

float preTopping, postTopping=0;
preTopping = ((length * width) / (40 * 40)) * 60;
printf("%f", preTopping);

推荐答案

在此表达式中:

((length * width) / (40 * 40)) * 60;

所有操作对象的类型都为int.这意味着完成了整数除法,整数除法将截断任何小数部分.所以如果length * width小于1600,除法的结果将是0,因为这是结果的整数部分.

如果要使用浮点除法,则需要将除法的至少一个操作数转换为浮点类型:

preTopping = ((float)(length * width) / (40 * 40)) * 60;

C++相关问答推荐

问关于C中的指针和数组

如何通过Zephyr(Devicetree)在PR Pico上设置UTE 1?

Mbed TLS:OAEP的就地en—/decryption似乎不起作用'

如何使用Python C API实现多线程程序?

由Go调用E.C.引起的内存快速增长

我无法让LLDB正确运行我的可执行文件

使用scanf在C中读取和存储文件中的值

从uint8_t*转换为char*可接受

cairo 剪辑区域是否存在多个矩形?

C代码在字符串中删除不区分大小写的子字符串的问题

通过描述符查找文件路径时出现问题

我应该在递归中使用全局变量吗

用C++高效解析HTTP请求的方法

为什么GCC不能在 struct 初始值设定项中以sizeof作为条件的三进制中处理复合文字的编译时求值?

分支预测和UB(未定义的行为)

GCC认为这是一个VLA是对的吗?

全局变量 y0 与 mathlib 冲突,无法编译最小的 C 代码

`void foo(int a[static 0]);` 有效吗?

我该如何处理这个 C 90 代码中的内存泄漏?

如何确保 gcc + libc 对于多字节字符串使用 UTF-8,对于 wchar_t 使用 UTF-32?