这个程序如何运作?

2024-01-22

#include <stdio.h>

int main() {
    float a = 1234.5f;
    printf("%d\n", a);
    return 0;
}

它显示一个0!!这怎么可能?理由是什么?


我特意放了一个%d in the printf研究行为的声明printf.


那是因为%d期望一个int但你已经提供了一个浮动。

Use %e/%f/%g打印浮动。


关于为什么打印0:浮点数转换为double发送至之前printf。小尾数中的双重表示形式的数字 1234.5 是

00 00 00 00  00 4A 93 40

A %d消耗 32 位整数,因此打印零。 (作为测试,您可以printf("%d, %d\n", 1234.5f);你可以得到输出0, 1083394560.)


至于为什么float被转换为double,因为 printf 的原型是int printf(const char*, ...),从 6.5.2.2/7 开始,

函数原型声明符中的省略号表示法会导致参数类型转换在最后一个声明的参数之后停止。默认参数提升是对尾随参数执行的。

从 6.5.2.2/6 开始,

如果表示被调用函数的表达式具有不包含原型的类型,则对每个参数执行整数提升,和具有类型的参数float被提升为double.这些被称为默认参数促销.

(感谢 Alok 发现了这一点。)

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

这个程序如何运作? 的相关文章

  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 重载<<的返回值

    include
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • JPA (Hibernate) 列映射中的原始类和包装类有什么区别?

    例如 数据库表中有一个整数列 然后在java模型中 它可以映射为原始整数 and Integer 我的问题是在这种情况下 int 和 Integer 有什么区别 以及性能问题 谢谢 我倾向于避免使用原语 对于 Id 属性尤其如此 这使得可以
  • LiquibasegenerateChangeLog 失败:Java 堆空间

    当我尝试从 DB2 数据库生成 SQL 数据时 遇到 Java 堆空间问题 大约有 25 个表 大约 1000 条记录 我使用以下脚本生成变更集数据 C liquibase 3 0 2 bin gt liquibase driver com
  • 多个超级用户命令 Android

    我正在尝试运行这个 String hin1 su c mount o remount rw t yaffs2 dev block mtdblk3 system try Runtime getRuntime exec hin1 catch I
  • 在数据表中启用滚动 X 时禁用底部搜索

    我正在尝试数据表中的数据显示https datatables net https datatables net i can show data from MYSQL to Datatables but i want column in da
  • Spring Boot 1.4、Spock 和 application.properties

    我正在尝试使用 Spock 为我的 Spring Boot 1 4 0 编写一些测试 但我的 application test properties 文件没有被拾取 我的 gradle 中有这个 dependencies compile o
  • 验证类 - 应该返回 false 还是抛出异常?

    我正在创建一个验证字符串的类 字符串无法通过的原因有很多 抛出异常或返回错误 错误代码更有意义吗 优点缺点 验证器不应抛出异常 因为验证器失败并不是 异常 事件 如果代码的其余部分收到错误数据 则应抛出异常 当您运行验证器函数时 您显然已准
  • 无法加载资源,插件在 iOS 上处理加载

    每次我尝试在服务器上查看视频文件时 我都会在 iOS 的 Safari Chrome 上收到此错误 我使用的是 blob 服务器 然后是 Apache 服务器 所以我不确定问题是什么 但是 当我只使用 Apache 时 我确实收到此错误 但
  • 在 iOS 中使用 pinterest 登录

    里面有关于pin的解释面向开发者的 Pinterest https developers pinterest com ios 但我仍然有以下两个问题 如何登录 用户登录后如何从服务器获取登录用户的响应 我已经浏览了谷歌和堆栈溢出上提供的所有
  • 将未知的十六进制数字转换为经度和纬度

    F3 c8 42 14 latitude 05 13637 should be nearby this coordinate 5d a4 40 b2 longitude 100 47629 should be nearby this coo
  • 在 Java 中从 Pentaho .prpt 报告文件生成 PDF - 依赖关系混淆

    谁能帮助我开始在 Maven 环境中使用 java 从 Pentaho prpt 文件生成 PDF 我有 Pentaho Reporting 3 5 for Java Developers 一书 我正在尝试其中的一个示例 本质上是 Reso
  • 在 R 中拟合平滑样条线(GAM 函数):拟合样条线所需的结数出现错误 - 结点要求增加

    我正在尝试将平滑样条拟合到看起来有两个峰值的数据 首先 我将平滑样条拟合到数据中 以识别结的潜在位置 library npreg library splines library mgcv x lt c 20 70 20 44 20 58 2
  • 将对象序列化为 XElement 并在内存中反序列化

    我想将对象序列化为 XML 但不想将其保存在磁盘上 我想将它保存在 XElement 变量中 用于与 LINQ 一起使用 然后反序列化回我的对象 我怎样才能做到这一点 您可以使用这两个扩展方法在 XElement 和对象之间进行序列化和反序
  • 如何检测与 puppeteer 一起使用的 chrome 版本?

    我读到 puppeteer 使用最新版本的 chrome 我在哪里可以找到它正在使用的版本 我不想访问窗口上的导航器对象来获取它 基本上没有什么运行时 只是想知道 puppeteer 作为一个包是否在某处列出了它的依赖项 基本上 我想从其他
  • 通过javascript动态添加css到页面

    我正在制作一个将添加到外部网站的小部件 并且我制作了一个页面 可以生成 css 供他们设置样式 文本颜色 背景颜色 字体大小等 我最终得到了一个充满 CSS 的文本区域 供他们复制 粘贴到他们的网站 有没有办法将此 css 添加到当前页面以
  • 一起使用 makeLenses、类约束和类型同义词

    我对 Haskell 很陌生并且想使用makeLenses from Control Lens类约束与类型同义词一起使我的函数类型更加紧凑 可读 我试图提出一个最小的虚拟示例来演示我想要实现的目标 并且该示例除此之外没有其他目的 如果您对上
  • Google 日历 (API) 问题

    我想用谷歌日历 http en wikipedia org wiki Google Calendar为了添加派对活动 所以我添加了一个新的日历 活动 有没有删除该日历中所有事件的功能 或者只能通过删除整个日历并重新创建它来实现 我有每天更新
  • 如何使用Weka预测结果

    我是 Weka 新手 对该工具感到困惑 我有一个关于水果价格和相关属性的数据集 我正在尝试使用数据集预测具体的水果价格 由于我是 Weka 新手 我不知道如何完成这项任务 请帮助我或指导我了解有关如何进行预测以及此任务的最佳方法或算法是什么
  • rCharts-如何向 NVD3 图表添加轴标签和标题

    我正在探索 reCharts 我在向 Y 轴和标题添加标签时陷入困境 我是 rCharts 新手 这是我的示例代码 require rCharts n2 lt nPlot Hours Month group Task data cars t
  • jquery 的 $.ajax 中从 url 参数中删除附加 url 的方法

    我正在使用 cakephp 并想使用jQuery ajax发布到我的服务器 问题是 jQuery 的 ajax附加协议和主机名 但还包括当前控制器 因此我无法更改我粘贴的控制器 有没有办法改变 url 参数 ajax 这是我的示例邮政编码
  • 这个程序如何运作?

    include