Comparison of a float with a value in C

2023-10-27

Predict the output of following C program.

#include<stdio.h>
int main()
{
     float x = 0.1;
     if (x == 0.1)
         printf ( "IF" );
     else if (x == 0.1f)
         printf ( "ELSE IF" );
     else
         printf ( "ELSE" );
}

The output of above program is “ELSE IF” which means the expression “x == 0.1″ returns false and expression “x == 0.1f” returns true.

Let consider the of following program to understand the reason behind the above output.

#include<stdio.h>
int main()
{
    float x = 0.1;
    printf ( "%d %d %d" , sizeof (x), sizeof (0.1), sizeof (0.1f));
    return 0;
}

The output of above program is “4 8 4” on a typical C compiler. It actually prints size of float, size of double and size of float.

The values used in an expression are considered as double (double precision floating point format) unless a ‘f’ is specified at the end. So the expression “x==0.1″ has a double on right side and float which are stored in a single precision floating point format on left side. In such situations float is promoted to double (seethis). The double precision format uses uses more bits for precision than single precision format.
Note that the promotion of float to double can only cause mismatch when a value (like 0.1) uses more precision bits than the bits of single precision. For example, the following C program prints “IF”.

#include<stdio.h>
int main()
{
     float x = 0.5;
     if (x == 0.5)
         printf ( "IF" );
     else if (x == 0.5f)
         printf ( "ELSE IF" );
     else
         printf ( "ELSE" );
}

Output:

IF

You can refer Floating Point Representation – Basics for representation of floating point numbers.

This article is contributed by Abhay Rathi. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

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

Comparison of a float with a value in C 的相关文章

  • C#中unsafe的使用

    1 unsafe在C 程序中的使用场合 实时应用 采用指针来提高性能 引用非 net DLL提供的如C 编写的外部函数 需要指针来传递该函数 调试 用以检测程序在运行过程中的内存使用状况 2 使用unsafe的利弊 好处是 性能和灵活性提高
  • Qt5实现与单片机ATS89S51通信

    Qt实现与单片机直接的通信上位机 单片机代码 测试环境 项目目标 实现效果 关键通信类 QSerialport 总结 这是我大二下学期的单片机课设做的一个小项目 实现上位机与下位机之间的通信 测试环境 开发环境 Qt5 96 Mingw32
  • 【C/C++】报错问题积累

    1 出现Deprecated declaration XXX give arg types c文件中 有没有参数的函数时 声明需要加void即 main c void fun main h void fun void
  • 调用拷贝构造函数的几种情况(附面试题)

    1 深拷贝和浅拷贝 拷贝构造函数的使用 有时候需要自己定义拷贝构造函数 以避免浅拷贝问题 在什么情况下需要用户自己定义拷贝构造函数 一般情况下 当类中成员有指针变量 类中有动态内存分配时常常需要用户自己定义拷贝构造函数 在什么情况下系统会调
  • C++ 中的虚函数及虚函数表

    C 中的虚函数及虚函数表 一 虚函数及虚函数表的定义 二 虚函数表指针和虚函数表的创建时机 三 虚函数实现多态的原理 一 虚函数及虚函数表的定义 虚函数 虚函数就是在基类中定义一个未实现的函数名 使用虚函数的核心目的就是通过基类访问派生类定
  • 五. python面向对象(多态 和metaclass=abc.ABCMeta)

    一 多态 多肽 一种事物的多种形态 叫多肽 例如 动物 animal 猫 狗 animal py 文件 动物类 都有名字这个属性 和吃这个方法 class Animal object def init self name self name
  • 解决“17: 错误:程序中有游离的‘\240’,\302’

    参考链接 https blog csdn net asuphy article details 54602426 执行如下命令即可 sed i s o240 o302 g dy haikang test cpp
  • C++工程师复习题

    一 auto ptr 类使用必须满足下列限制 1 不要使用 auto ptr 对象保存指向静态分配对象的指针 2 不要使用两个 auto ptrs 对象指向同一对象 3 不要使用 auto ptr 对象保存指向动态分配数组的指针 4 不要将
  • 编写程序模拟完成动态分区存储管理方式的内存分配和回收。

    usr bin python coding utf 8 class Table object 空闲分区表 0 开始地址 1 长度 freeTable 占用分区表 0 程序名 1 开始地址 2 长度 useTable def init sel
  • 简析多级指针解引用

    转自 简析多级指针解引用 指针是C语言中公认的最为强大的语法要素 但同时也是最难理解的语法要素 它曾给程序员带来了无数麻烦和痛苦 以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了 下面是一个最简单的C语言指针的例子 int
  • 互联网创业盈利模式指南

    看了很多创业的case 都有点下笔千言 离题万里的 情况 就是很多case都很精彩 但是公司 的价值最终是落实到 给创业者和投资人的回报的 因此 所有的case 最终都是 落实到盈利 模式上 一位投资人士说的很明确 中国的盈利模式很简单 就
  • 如何学好C语言的数据结构与算法?

    C语言的数据结构与算法 难就难在链表 学会了链表 可能后面就一点都不难了 书籍推荐 数据结构与算法分析 C语言描述版 要深入学习的话可以选择这本书 因为针对链表的讲解是比较详细的 所以可以很快理解链表 跟着书上一点点实现基本操作 增删改查
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • BP学习算法-构建三层神经网络

    引 人工神经网络 Artificial Neural Networks 简写为ANNs 也简称为神经网络 NNs 或称作连接模型 Connection Model 是一种模仿动物神经网络行为特征 进行分布式并行信息处理的算法数学模型 这种网
  • 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)<转>

    干货 Chrome插件 扩展 开发全攻略 不点进来看看你肯定后悔 写在前面 我花了将近一个多月的时间断断续续写下这篇博文 并精心写下完整demo 写博客的辛苦大家懂的 所以转载务必保留出处 本文所有涉及到的大部分代码均在这个demo里面 h
  • R----dplyr包介绍学习

    dplyr包 plyr包的替代者 专门面对数据框 将ddplyr转变为更易用的接口 gt 来自dplyr包的管道函数 其作用是将前一步的结果直接传参给下一步的函数 从而省略了中间的赋值步骤 可以大量减少内存中的对象 节省内存 可惜的是应用范
  • lua和测试(一)

    lua做为一门高级语言 在游戏产业运用到机会越来越多了 测试掌握几门脚本语言也有一定的重要性 以下对于lua组合输入做出一些引导 测试需要掌握的关于返回数值 主要用到布尔类 前言的指引 lua的语法比较简单和清晰 学过c语言的可以很好的掌握
  • Open3D(C++)实现建筑物点云立面和平面分割提取

    Open3D C 实现建筑物点云立面和平面分割提取 近年来 点云技术在城市规划 机器人地图构建等领域得到广泛应用 本篇文章将介绍如何利用Open3D C 库实现建筑物点云立面和平面分割提取 准备工作 首先需要编译安装Open3D库 本文使用
  • C++中的并发多线程网络通讯

    C 中的并发多线程网络通讯 一 引言 C 作为一种高效且功能强大的编程语言 为开发者提供了多种工具来处理多线程和网络通信 多线程编程允许多个任务同时执行 而网络通信则是现代应用程序的基石 本文将深入探讨如何使用C 实现并发多线程网络通信 并
  • 在 OS X 上的 virtualenv 中安装 scrapy 加密时发生错误 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在安装 scrapypip in virtualenv on OS X 10 11 当它安装密码学时 它说 buil

随机推荐

  • HTML5拖放API之回收站效果,HTML5拖放API

    1 拖放的步骤 1 对象元素的draggable属性设置为true draggable true 还需要注意的是a元素和img元素必须指定href 2 编写与拖放有关的事件处理代码 事件 产生事件的元素 描述 dragstart 被拖放的元
  • C# 连接SQLServer数据库及登录验证知识

    最近在做联系数据库的系统项目 这里重新回顾了一些数据库的知识 主要是使用VS2012与SQL Server 2012简单的做了下面两个数据库的应用 虽然比较简单 但我认为这是非常有用的知识 尤其对刚接触这样的系统知识的同学 同时也巩固了自己
  • 无法访问com.fasterxml.jackson.databind.JavaType找不到com.fasterxml.jackson.databind.JavaType的类文件

    在Spring Data Redis项目整合中更换序列化器存储引用数据类型时报如下的错误 Error 67 42 java 无法访问com fasterxml jackson databind JavaType 找不到com fasterx
  • Knowledge Graph Prompting for Multi-Document Question Answering

    本文是LLM系列文章 针对 Knowledge Graph Prompting for Multi Document Question Answering 的翻译 多文档问答中的知识图谱提示 摘要 1 引言 2 符号 3 知识图谱构建 4
  • jquery中获取下拉框的文本值和value值(键值)

  • IDEA 代码没错但是编译出错解决办法

    上午运行项目的时候突然编译器崩了 找了半天原因终于找到了元凶 因为项目是UTF 8格式 但是检查 idea encodings xml是否对某些类指定了charset gbk 如果有的话 删除charset即可 其他的一些寻常的编译错误网上
  • Java高频面试复习题,助你吊打面试官

    前言 2022年对程序员来说是特别严峻的一年 也是大改革的一年 大部分人因为今年 疫情 的原因纷纷离开了自己原有的岗位 也有人抓住机会逆流而上拿到更高的待遇 2022年金九银十已经到来了 试问你进入了自己心仪的企业了吗 拿到自己满意的薪资待
  • Send Mail

    using System using System Web Mail using System Configuration using System Web using System IO using DAL namespace BLL
  • 2023华为OD机试真题Python实现【密室逃生游戏】

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串中
  • Echarts+jquery实现复杂的渐变色仪表盘

    ECharts 一个纯 Javascript 的图表库 可以流畅的运行在 PC 和移动设备上 Echarts提供了很多的图表 像是仪表图 关联图等 代码比较好上手 有很多配置项 下面是我记录我做过的仪表盘 效果图 需求 1 颜色渐变效果 2
  • 从 Java 到 Go:搭建问答社区后端的过渡之旅

    目录 目录 1 项目概述 2 环境准备 2 1 安装依赖 3 从 Java 到 Go 的基础知识
  • uni-app离开当前页面后,video组件依然播放视频

    问题 页面中使用了video组件 点击播放后 切换到其他页面 视频仍在播放 可以听见声音 目前采用的方法
  • 智能五子棋-C语言

    一 项目需求 五子棋是一种简单的黑白棋 历史悠久 起源于中国 后传入日本 在日本被称为 连珠 是一种老少皆宜的益智游戏 人工智能五子棋系统的目标用户是一切想致力于研究人机对弈算法理论的相关研究者和一切想通过此系统进行五子棋人机对弈游戏的人群
  • SpringBoot依赖管理与自动配置及相关注解

    依赖管理 导入starter场景启动器 1 spring boot starter xxxxx xxxxx 就是指某种场景 引入该starter 这个场景所有常规需要的依赖都自动引入项目 如
  • git使用小手册(一)

    本文章属于git入门篇 针对刚开始接触git的同学 帮助大家了解git并理清使用思路 当然有git使用经验的也不妨一看 说不定会有意外收获呢 本篇假设你已经安装好git 并配置好了username email信息 一 git简介 Git是一
  • 数据结构课设--图书管理系统(含泪版)

    1 要求 设计一个计算机管理系统完成图书管理基本业务 基本要求 1 每种书的登记内容包括书号 书名 著作者 现存量和库存量 2 对书号建立索引表 线性表 以提高查找效率 3 采编入库 新购一种书 确定书号后 登记到图书帐目表中 如果表中已有
  • MATLAB小技巧(22)矩阵分析--逐步回归

    MATLAB小技巧 22 矩阵分析 逐步回归 前言 一 MATLAB仿真 二 仿真结果 三 小结 前言 MATLAB进行图像处理相关的学习是非常友好的 可以从零开始 对基础的图像处理都已经有了封装好的许多可直接调用的函数 这个系列文章的话主
  • 基于python的人员抽签程序

    要求 抽签人数可以指定 人员名单外部导入 抽中的人员自动剔除 bug 当人数 1的时候有bug 人数最大为14 导入库 from tkinter import import random 导入名单 is run False 启停判断 f o
  • ARM 中MMU使用实例

    转自 http www eeworld com cn mcu article 2016080728323 html MMU使用实例 地址映射 本开发板SDRAM的物理地址范围处于0x30000000 0x33FFFFFF S3C2410 S
  • Comparison of a float with a value in C

    Predict the output of following C program include