当前位置: 首页 > news >正文

程序中的零值比较

前言:什么是零值?

在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.00001int 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.mrgr.cn/news/21537.html

相关文章:

  • Qt线程使用
  • 使用 @NotEmpty、@NotBlank、@NotNull 注解进行参数校验
  • log4j靶场,反弹shell
  • 828华为云征文|基于Flexus云服务器X实例的应用场景-部署动态域名神器lucky
  • Openharmony 图片自适应全屏显示
  • 人工智能数据基础之线性代数入门-学习篇
  • 自我提升社团成立啦,欢迎各位同学加入~
  • 电脑驱动作用详解
  • 基于SSM+Vue+MySQL的可视化高校公寓管理系统
  • CTF 竞赛密码学方向学习路径规划
  • 心脑血管科张景龙医生:心功能不全,全面解析心脏健康的隐忧
  • 图像分割分析效果2
  • HMI设计:嵌入式设备和电脑的差异化,工控领域首选。
  • 算法设计与分析(乘船问题
  • 结构化开发方法的三种基本控制结构
  • SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI
  • 多机编队—(2)Ubuntu安装Eigen OSQP OSQP-EIGEN求解器
  • 域取证的日志分析
  • QString如何格式化字符串
  • python学习