每当使用除法时,C 程序中的计算结果总是为 0

2024-01-29

我使用两个不同的变量来除以来自的变量int and double。当我使用类似以下内容时,这些工作正常:

int cost
cost = 40;
cost = (cost / 400) * 20 * 2;

为此,该方法工作正常,我得到了正确的结果,即4,但是当我使用变量时cost并将其放在标题中,例如:

#define cost 40
int total_cost;
total_cost = (cost / 400) * 20 * 2;

这总是导致0对我来说,我不知道为什么。即使我使用printf with %d or %f这仍然给了我一个结果0.


您正在进行整数除法 - 向下舍入。

所以:

cost / 400

返回零,因为cost = 40 and 40 / 400向下舍入为零。

你应该做的是使用浮点类型,例如double.

EDIT:

double cost
cost = 40;
cost = (cost / 400) * 20 * 2;

and

#define cost 40
double total_cost;
total_cost = ((double)cost / 400) * 20 * 2;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每当使用除法时,C 程序中的计算结果总是为 0 的相关文章

随机推荐

  • C++11 外部模板:我们在哪里真正需要它们?

    在 C 03 中我们有模板显式实例化定义 template class Foo
  • 从 USB 可移动存储读取文件

    在我的应用程序中 我想从 USB 可移动存储读取文件 我有一个 txt 我想阅读它 void read UsbManager manager UsbManager getSystemService Context USB SERVICE H
  • 我们如何处理快速增长得非常大的交集表?

    例如 我们有表A和表B 它们之间存在多对多关系 表 C 是一个交集表 存储 A id 和 B id 以及表示两者之间关系的值 或者作为一个具体的例子 想象一下 stackexchange 有一个用户帐户 一个论坛和一个业力分数 或者 一个学
  • 如何在 1.6 中禁用 JTable 中的所有排序代码

    我有一个 JTable 扩展 自 Java 1 3 1 4 以来一直在项目中使用 它提供了列重新排序和通过单击列进行排序等功能 我们正在升级到 Java 1 6 新的 JTable 会停止旧的排序代码的工作 要使所有内容都适合新的 JTab
  • 使用 DirectShow.NET 的音频同步问题

    我已经在 DirectShow NET 论坛上启动了一个主题 这里是链接http sourceforge net projects directshownet forums forum 460697 topic 5194414 index
  • mat-paginator 更改 mat-paginator-range-label 的放置

    我有一个简单的mat table with mat paginator By default design it looks like this 我想更改范围标签的放置并将其放在导航按钮之间 如下所示 基本上 我需要移动div mat pa
  • 如果执行的 JavaScript 进入无限循环,Android WebView 将进入不可恢复状态

    如果执行的 JavaScript 代码陷入无限循环 Android WebView 小部件似乎会进入不可恢复的状态 例如这个网页就会导致这个问题 Failure Test 只需使用 WebView 在任何 Android 浏览器中输入以下
  • R 连接到 sqlite

    我无法从 R 连接到 sqlite Sqlite3 安装在 Linux 服务器上并且能够创建 修改 但 R 未连接 library dplyr library RSQLite gt db lt src sqlite my db sqlite
  • 后台线程上的领域通知令牌

    我试图在后台线程上获取领域数据并添加通知块 iOS Swift 基本示例 func initNotificationToken DispatchQueue global qos background async let realm try
  • React-leaflet:添加 TopoJSON 层

    我刚刚开始使用 React leaflet 库并获得了一个要加载 geoJSON 层的地图 但是我想使用 TopoJSON 层 我知道这样的纯传单是可能的 https gist github com rclark 5779673 https
  • Visual Studio 解决方案中建议的项目数量

    我们正在开始开发新的应用程序 其中包括大约 12 名开发人员在 MS Visual Studio 中使用 C 开发的 30 50 个项目 我正在致力于应用程序模块的组件化 以支持架构并实现并行工作 我们争论 我们应该有多少种解决方案 有人声
  • ORM 和层

    很抱歉这一点在这里到处都是 但我感觉就像一只狗在追我的尾巴 此时我很困惑 我试图找到开发 3 层解决方案 IL BL DL 的最简洁方法 其中 DL 使用 ORM 来抽象对数据库的访问 在我见过的所有地方 人们都使用 LinqToSQL 或
  • Java 游戏引擎 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近一直在研究游戏开发 我的第一个编程语言是 Java 在玩过许多用 C 开发的令人惊叹的游戏后 我想知道为什么 Java 在游戏行
  • 如何在Github上托管gem并使用它?

    我已将私有 gem 文件添加到新存储库中here https github com praveenitmec testgem但是当我尝试将它添加到我的 gem 文件中时 gem test gem git gt https github co
  • jQuery 禁用链接

    任何人都知道如何禁用 jquery 中的链接而不使用return false 具体来说 我想要做的是禁用某个项目的链接 使用 jquery 执行单击它会触发一些内容 然后重新启用该链接 以便再次单击它时它会默认工作 谢谢 戴夫 UPDATE
  • 有关 python ImportError 的更多信息,没有命名的模块

    遵循建议here https stackoverflow com questions 338768 python importerror no module named 我的包 或包含我的模块的目录 位于 C Python34 Lib si
  • 如何从 C# 导入和使用非托管 C++ 类?

    我有一个本机 C dll 一些头文件和导入库 有没有办法在 C 中实例化 dll 中定义的对象 我知道的两种方法是 将 C 代码包装到 COM 中 使用 DLLImport 和外部 C 函数 C CLI 是您的朋友 不过 您会遇到一个问题
  • Python 日志记录:传播低于当前记录器级别的消息

    我想记录特定记录器名称 特定级别及更高级别的消息 例如INFO及以上 到特定的日志处理程序 例如文件处理程序 同时仍然将所有日志消息发送到控制台 Python 的版本是 2 7 到目前为止我尝试的是创建两个记录器 根记录器 命名记录器 对于
  • 忽略来自 Google Closure 中一个文件的编译器警告

    我在一个相当大的 Closure 项目中使用外部库 Phonegap 不幸的是 Phonegap 生成了大量编译器警告 所有 危险使用 这足以让我在编译器输出中搜索有关我自己的代码的警告变得非常烦人 有没有一种方法可以仅消除一个文件中的警告
  • 每当使用除法时,C 程序中的计算结果总是为 0

    我使用两个不同的变量来除以来自的变量int and double 当我使用类似以下内容时 这些工作正常 int cost cost 40 cost cost 400 20 2 为此 该方法工作正常 我得到了正确的结果 即4 但是当我使用变量