C 函数分配不正确的浮点值

2023-12-15

我试图返回一个浮点值并将其分配给一个浮点变量,但新浮点值与返回的值不同。

float getVoltageReading() {
    return 1.2f;
}


void updateUIReadings(uint8_t menuID) {
    float integerReading = getVoltageReading(); // digital voltage
}

在调试器中我看到 getVoltageReading 返回1.2,但整数读数被分配为1.06703091e+009

这是为什么?


您正在呼叫getVoltageReading作用域内没有活动原型的函数,这意味着它假设它将返回一个int. It looks就像,从你的问题的组织方式来看,它在范围内,但我可以向你保证它不是。

您可以看到以下两个文件,testprog1.c:

#include <stdio.h>

//float getVoltageReading(void);

int main(void) {
    float integerReading = getVoltageReading ();
    printf("%e\n", integerReading);
    return 0;
}

and testprog2.c:

float getVoltageReading(void) {
    return 1.2f;
}

当它们被编译并链接在一起时,输出是:

1.067031e+09

因为从返回的浮点值getVoltageReading()被解释为int。如果您取消注释原型testprog1.c,它工作得很好,因为它将浮点值解释为float:

1.200000e+00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 函数分配不正确的浮点值 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 使用 Gson for Java 进行 JSON 解析

    我想解析 JSON 类型的数据String 我在用谷歌Gson I have jsonLine data translations translatedText Hello world 我的班级是 public class JsonPars
  • python 中的计算器

    我正在尝试制作可以使用基本 4 个运算符 例如 1 2 3 4 5 求解表达式的计算器 但是它不起作用 我不知道出了什么问题 请检查我的代码 当我运行它时 我在 8 行中收到无限数量的错误return ret parts 0 ret par
  • MySQL/InnoDB 和长时间运行的查询

    当使用 myisam 引擎运行查询时 因为它不是事务性的 所以长查询 据我所知 不会影响其他查询的数据 在 InnoDB 中 它警告的事情之一是避免长查询 InnoDB快照时 是不是把所有东西都快照了 我问这个问题的原因是 无论出于何种原因
  • 为什么我的批处理脚本以管理员身份运行时无法执行?

    我正在尝试创建一个 Windows 批处理脚本 该脚本将允许我部署 Windows 7 64 位的准备更新 但该脚本无法正常启动 我将所有文件放在同一个文件夹中 我尝试提取文件 然后通过 dism 安装它们 当我正常启动它时 文件提取 但
  • ThreeJS:将边缘几何应用于 ArrowHelper

    我正在尝试使用 ThreeJS 中的 ArrowHelper 创建箭头 let arrow new THREE ArrowHelper direction normalize new THREE Vector3 length color h
  • 如何远程访问自托管的 Nancy 服务?

    我正在创建一个简单的 Windows 服务 该服务托管 Nancy 实例以提供其内部数据的视图 在本地计算机上使用浏览器时 一切都按预期运行 我看到了它所提供的观点 但是 我找不到它无法从远程浏览器 在同一网络上 访问的任何原因 从远程浏览
  • 向量的下限

    我有这个简单的课程 class MyClass public int id string name 我想要一个带有指向此类对象的指针的向量 该向量按引用排序MyClass id 我以为使用lower bound很容易 我之前用对象向量 而不
  • minikube 和 ingress-nginx 没有打开端口 80

    我是 ingress nginx 的新手 我使用 minikube 启用了它minikube addons enable ingress 在寻找与 ingress nginx 相关的服务时 我跑了kubectl get services n
  • 如何在 WPF 中添加自定义路由命令?

    我有一个包含菜单和子菜单的应用程序 我已将应用程序命令附加到一些子菜单项 例如剪切 复制和粘贴 我还有一些其他没有应用程序命令的菜单项 如何将自定义命令绑定添加到这些子菜单项 我已经经历过this文章但无法将事件附加到我的子菜单项 我使用放
  • WebUSB - “无法声明接口”错误

    我尝试使用下面的代码通过 WebUSB API 使用 POS 打印机 但失败了 claimInterface 错误为DOMException Unable to claim interface 所有测试均在 Linux 上的 Chrome
  • 如何使用 Tesseract 提高图像质量以从图像中提取文本

    我试图在下面的代码中使用 Tesseract 来提取图像的两行 我尝试提高图像质量 但没有成功 谁能帮我 from PIL import Image ImageEnhance ImageFilter import pytesseract i
  • VB6 中的运行时错误堆栈跟踪或位置

    我维护一个用 VB6 编写的旧应用程序 在客户端环境中 它会引发运行时错误 我无法在调试器下重现该错误 有什么方法可以获取堆栈跟踪或错误位置吗 我的意思是 不要在代码中放置跟踪语句 例如here或添加错误处理程序以记录每个过程 例如here
  • 如何在 Mac 上将 adb 与 genymotion 结合使用?

    我正在 Mac OS X 10 9 4 上使用 cordova 构建 Android 应用程序 我正在使用 genymotion 创建虚拟设备 昨天 我能够获得 cordova run android 让我的应用程序在 genymotion
  • 反射不适用于 Android 发布的 apk。即使禁用了 proguard/minify

    目前我面临一个奇怪的问题 我的应用程序的发布 apk 抛出 NoSuchFieldExceptions 它在调试 apk 上运行良好 我试图获取的字段是 android widget 打包的 我还努力启用 proguard 并在 progu
  • 如何更改自定义子面板中的默认排序 - Sugarcrm?

    我想在自定义面板中按 创建日期 进行默认排序 您能指导我吗 如何将其设为 创建日期 作为默认排序 请帮我 In your layout defs改变sort by到所需的列 在此示例中 用于排序的默认列是date entered
  • jinja2 如何删除日期时间中的微秒

    在 Jinja2 模板中 我想显示最后一次登录 Last Login user last seen last seen应该是 sqlite 中的日期时间对象 它总是给我这样的东西 2014 07 27 23 09 36 467761 在模板
  • 卡桑德拉更新专栏

    我如何更新 cassandra 数据库中的列 columnfam username name edds surname surname email email protected 例如我需要更新姓氏 我使用 PHP 客户端 PHPCASSA
  • 当函数是 lambda 或嵌套函数时,concurrent.futures.ProcessPoolExecutor 会挂起

    任何人都可以深入了解为什么使用 lambda 或嵌套函数 f 将使concurrent futures ProcessPoolExecutor挂在下面的代码示例中吗 import concurrent futures def f2 s re
  • 为什么 postgres 的日期范围上限函数返回独占边界?

    我为这篇文章创建了一个 sql 小提琴 http sqlfiddle com 15 7b5d7 1 0 问题 1 为什么插入一条记录时会出现daterange具有独占边界的实际上存储了具有包含下限和独占上限的范围 为什么 pg 不将它们都存
  • C 函数分配不正确的浮点值

    我试图返回一个浮点值并将其分配给一个浮点变量 但新浮点值与返回的值不同 float getVoltageReading return 1 2f void updateUIReadings uint8 t menuID float integ