这两者之间有什么区别吗

float foo1 = (int)(bar / 3.0);
float foo2 = floor(bar / 3.0);

据我所知,这两个 case 的结果是一样的.编译后的代码有什么不同吗?

推荐答案

强制转换为整数将向零截断.floor()将向负无穷方向截断.如果bar为负值,这将给出不同的值.

C++相关问答推荐

有什么方法可以检测SunOS上的SparcWorks吗?

ATmega328P USART发送字符重复打印

当打印字符串时,为什么在c中没有使用常量限定符时我会收到警告?

以前版本的tty_ldisc_ops.ioctl()是否也需要文件参数?

如何在IF语句中正确使用0.0

在传统操作系统上可以在虚拟0x0写入吗?

将常量转换为指针会增加.数据大小增加1000字节

CSAPP微型shell 实验室:卡在sigprocmask

不使用任何预定义的C函数进行逐位运算

为什么WcrTomb只支持ASCII?

使用Open62541向OPCUA服务器发送读请求时内存泄漏

有没有一种方法可以用C创建保留限定符的函数?

合并对 struct 数组进行排序

不带Malloc的链表

当我将偏移量更改为任何非零值时,C中的mmap共享内存出现无效参数错误

如何在C中计算包含递增和递减运算符的逻辑表达式?

无法理解 fgets 输出

C Makefile - 如何避免重复提及文件名

如何向 execl 创建的后台程序提供输入?

如何正确探测平台设备?