程序中的零值比较

news2025/1/10 2:26:39

前言:什么是零值?

在C/C++中,“零值”通常指的是数值类型的零(0),对于指针来说则是空指针(nullptr 或 NULL)。下面我们将分别讨论如何比较整型、字符、浮点数和指针与“零值”的比较。

不同的数据类型对应的零值不同

整型(int)

整型的零值就是 0。比较整型变量与零值通常使用相等运算符 == 或不等运算符 !=。

代码示例:

#include <stdio.h>

int main() {
    int a = 0;
    int b = 10;

    // 比较整型变量与零值
    if (a == 0) {
        printf("a is zero.\n");
    } else {
        printf("a is not zero.\n");
    }

    if (b == 0) {
        printf("b is zero.\n");
    } else {
        printf("b is not zero.\n");
    }

    return 0;
}

字符(char)

字符类型的零值是 \0,这是ASCII码为0的字符。在字符串中,\0 用于表示字符串的结束。 

代码示例:

#include <stdio.h>

int main() {
    char c1 = '\0';
    char c2 = 'A';

    // 比较字符变量与零值
    if (c1 == '\0') {
        printf("c1 is zero (null character).\n");
    } else {
        printf("c1 is not zero (null character).\n");
    }

    if (c2 == '\0') {
        printf("c2 is zero (null character).\n");
    } else {
        printf("c2 is not zero (null character).\n");
    }

    return 0;
}

浮点数(float/double)

浮点数的零值是 0.0。比较浮点数变量与零值时需要注意,由于浮点数的精度问题,直接使用 == 进行比较可能会得到错误的结果。通常的做法是比较两个浮点数之间的差是否在一个很小的范围内,这个范围称为“容差”(epsilon)。 

#include <stdio.h>
#include <math.h>

#define EPSILON 0.00001

int main() {
    double f1 = 0.0;
    double f2 = 0.000001;

    // 比较浮点数变量与零值
    if (fabs(f1) < EPSILON) {
        printf("f1 is approximately zero.\n");
    } else {
        printf("f1 is not approximately zero.\n");
    }

    if (fabs(f2) < EPSILON) {
        printf("f2 is approximately zero.\n");
    } else {
        printf("f2 is not approximately zero.\n");
    }

    return 0;
}

指针

指针的零值是 nullptr(C++11及以后版本)或 NULL(C和旧版本C++)。在C++11及以后版本中推荐使用 nullptr,而在C中通常使用 (void *)0 或 NULL。 

代码示例:

#include <stdio.h>

int main() {
    int *p1 = nullptr;  // 或者 int *p1 = NULL;
    int *p2 = (int *)malloc(sizeof(int));

    // 比较指针变量与零值
    if (p1 == nullptr) {
        printf("p1 is a null pointer.\n");
    } else {
        printf("p1 is not a null pointer.\n");
    }

    if (p2 == nullptr) {
        printf("p2 is a null pointer.\n");
    } else {
        printf("p2 is not a null pointer.\n");
    }

    free(p2);  // 释放内存
    return 0;
}

运行结果:

总结:

整形(0)、字符(‘\0’)、浮点数(0.0+容差)、指针(null/nullptr)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

顺序表与链表练习

目录 1.在长度为n(n > 1)的单链表上&#xff0c;设有头和尾两个引用&#xff0c;执行( )操作与链表的长度有关。 2.下列关于链表的说法那个是正确的( ) 3. 关于链表和顺序表间的区别&#xff0c;叙述错误的是&#xff08; &#xff09; 4.在长度为 n 的顺序表下标为 i…

oatpp apiclient 客户端get,post请求python fastapi demo

最新用fastapi搞了个服务端,python功能太强了,就是环境不好弄,弄好后,不要轻易换python版本,不要装多个python版本 前面搞了个oatpp webapi服务端,现在要用客户端,为什么用opatpp客户端,因为他不再带其他库了 demo: 我的请求比较简单,就是向python 的 fastapi服务端…

CSP-J基础之常见的竞赛题库

文章目录 CSP-J基础之常见的竞赛题库1. 可达 (KEDA)2. 洛谷 (Luogu)3. Codeforces 洛谷账号的注册总结 CSP-J基础之常见的竞赛题库 在备战CSP-J&#xff08;Certified Software Professional Junior&#xff09;及其他信息学竞赛时&#xff0c;选手们常需要借助在线题库来进行…

GIS圈大事件!Cesium被收购了,是好是坏?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第34/100篇文章。 Cesium开发交流群V&#xff1a;brown_7778&#xff08;备注来意&#xff09; 一觉醒来&#xff0c;突然看到Cesium官方发的消息&#xff0c;宣布通过收购的方…

第十三届山东省ICPC

vp链接&#xff1a;https://codeforces.com/gym/104417 A. Orders 根据题意模拟&#xff0c;分别按照 a&#xff0c;b 排序&#xff0c;排序后再判断该订单是否能完成。 #include <bits/stdc.h> using namespace std;#define int long longconst int N 105; int n, k…

C#索引器(Indexer)

索引器(Indexer)允许一个对象可以像数组一样使用下标的方式来访问. 当为类定义一个索引器时,该类的行为就会像一个虚拟数组(virtual array) 一样.可以使用数组访问运算符[]来访问该类的成员. 语法 一维索引器的语法如下: element-type this[int index] { // get 访问器 …

Minimax-秋招正式批-面经(SQL相关)

1. 谈谈对聚簇索引的理解 聚簇索引 InnoDB通过主键聚集数据&#xff0c;如果没有定义主键&#xff0c;InnoDB会选择非空的唯一索引代替。如果没有这样的索引&#xff0c;InnoDB会隐式定义一个主键来作为聚簇索引聚簇索引就是按照每张表的主键构造一颗B树&#xff0c;同时叶子…

中国书法——孙溟㠭浅析碑帖《越州石氏帖》

孙溟㠭浅析碑帖《越州石氏帖》 《越州石氏帖》 是一部汇集多本摹刻的帖&#xff0c;南宋时期的会稽石邦哲&#xff08;字熙明&#xff09;把家藏的一些法书碑帖集中一起摹刻成的&#xff0c;宋理宗时临安书商陈思《宝刻丛编》有记載这部帖的目录。现在还存有宋代时拓的残缺本…

golang hertz框架入门

两种模式新建项目 1、手动新建项目 2、使用hz工具新建项目 一、手动创建项目&#xff0c;并拉取框架 1、新建项目目录 hertz_demo_w 2、在项目跟目录新建main.go 文件 package mainimport ("context""github.com/cloudwego/hertz/pkg/app""github.…

WPS如何查看已添加到词典的单词

WPS Office&#xff08;12.1.0.17827&#xff09; ① 点击文件&#xff0c;在文件中找到选项 ② 找到拼写检查并点击自定义词典 ③ 如果要删除已添加到词典的"错词"&#xff0c;则点击修改 ④ 选择"错词", 点击删除

电工基础知识

1、电工常用的电工工具 2、PPR常用配件名称 3、铜芯导线如何选择线鼻子 4、丝锥孔径对照表 5、三相电机接线方法_星形_角型 6、内六角螺铨尺寸表 7、常用螺母规格尺寸 8、常用螺栓螺母名称 9、灭火器分类使用 10、电缆颜色使用代码 11、电缆铜铝鼻子 12、空气开关

力扣第一题:两数之和

文章目录 需求分析代码结尾 需求 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你…

Hexo博客构建记录

开学了&#xff0c;准备让休息了两个月的大脑重新活动一下筋骨&#xff0c;就尝试了一下Hexo博客的简单构建。在这里记录一下&#xff0c;方便以后使用。 以下是笔者搭建时用到的教程 简单搭建教程 简单&#xff0c;虽然个人感觉布局有点乱&#xff0c;关于上传文章的介绍略…

如何下载各个版本的tomcat-比如tomcat9

1&#xff0c;找到tomcat官网https://tomcat.apache.org/ Apache Tomcat - Welcome! 找到tomcat9&#xff0c;或者archives 1.1&#xff0c;找到对应版本 1.2&#xff0c;找到小版本 1.3&#xff0c;找到bin 2&#xff0c;Index of /dist/tomcat/tomcat-9/v9.0.39/bin 2.1&a…

七牛云存储OSS基本使用测试(超详细!!!)

首先就是注册&#xff0c;然后实名认证&#xff0c;这没什么可教的 认账成功后&#xff0c;点击对象存储Kodo 点击左侧空间管理&#xff0c;新建空间 输入一个名字&#xff0c;存储区域选择距离你地址比较近的&#xff0c;访问控制选择公开(这样别人在访问时也可以看到) 这样就…

”CSS 网格“二维布局系统(补充)——WEB开发系列32

CSS 网格布局是一种二维布局系统&#xff0c;用于网页设计。通过使用网格&#xff0c;你可以将内容以行和列的形式进行排列。此外&#xff0c;网格布局还能够简便地实现一些复杂的布局结构。 一、什么是网格布局&#xff1f; CSS网格布局是一种二维布局系统&#xff0c;它允许…

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的 会有一个中断源&#xff0c;也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件&#xff0c;也就是产生中断信号&#xff0c;就会执行中断服务函数 但是CPU是如何知道中断源产生后就找到对应的中断…

Redis持久化机制—RDB与AOF

Redis持久化机制 RDB&#xff08;默认&#xff09; **思想&#xff1a;**保存整个数据库的快照&#xff0c;也就是RDB文件&#xff0c;有两种保存方式&#xff0c;前台保存save和后台保存bgsave&#xff0c;前者会阻塞主进程程&#xff0c;后者则是fork一个子进程去完成备份操…

ffmpeg的安装和使用教程及案例

FFmpeg的安装与使用教程 一、FFmpeg简介 FFmpeg是一个开源的、跨平台的音视频处理工具&#xff0c;可以用来转换、播放、录制、流化音视频数据&#xff0c;以及进行多种音视频编码和解码。 二、安装FFmpeg 1. Windows系统安装 下载预编译的二进制文件&#xff1a;从FFmpeg…

828华为云征文|华为云服务器Flexus X搭建悟空crm管理系统——助力企业云上管理(解决APP Referer校验失败问题)

1、为什么我们企业会选择Flexus云服务器X实例来部署自己的CRM管理系统&#xff1f; 因为基于华为云Flexus X实例搭建CRM管理平台&#xff0c;可以从容面对企业内部瞬息万变的业务压力变化 2、华为云服务器Flexus X方案及优势&#xff1a; 灵活伸缩 搭配弹性伸缩服务AS及负载均…