C语言深度解剖-关键字(6)

简介: C语言深度解剖-关键字(6)

1. 浮点型与零的比较:

1.1 推导:

例:


double a, b;
  fabs(a - b) < DBL_EPSILON
  fabs(a - 0.0) < DBL_EPSILON
  fabs(a) < DBL_EPSILON

如果有两个浮点数比较,


如果fabs(a - b) < DBL_EPSILON,


就证明a = b。


如果 b 等于零,就是和浮点数与零比较,


零也可以省略,


所以fabs(a) < DBL_EPSILON 就相当于a 与零比较。


1.2 实践:

例:


#include 
#include 
#include 
int main()
{
  double a = 0.00001;
  if (fabs(a) < DBL_EPSILON)
  {
  printf("a = 0");
  }
  else
  { 
  printf("a != 0");
  }
  return 0;
}

输出:


输出:a != 0

例2:

#include 
#include 
#include 
int main()
{
  double a = 0.0000000000000001;
  if (fabs(a) < DBL_EPSILON)
  {
  printf("a = 0");
  }
  else
  { 
  printf("a != 0");
  }
  return 0;
}


输出:


输出:a = 0

所以说,


为什么a != 0,因为a还不够小,


只要a 够小,就等于零了。


1.3 总结:

浮点数与零比较:


1. 浮点数存储的时候,是有精度损失的。


2. 浮点数是不能直接用 == 比较的。


3. if (fabs(a - b) < DBL_EPSILON) { }


2. 理解强制类型转换:

强制类型转换只是改变我们对数据的看法,


并不会改变数据。


类型其实就是我们如何看待这段数据,


又或者说我们如何看待这段二进制序列,


因为数据就是以二进制的形式存到内存中。


3.指针与零比较

直接:


#include 
int main()
{
  int a = 0;
  int* p = &a;
  if (p == NULL)
  {
  ;
  }
  return 0;
}

4. switch case 语句:

例:


#include 
int main()
{
  int day = 1;
  switch (day) {
  case 1:
  printf("星期一\n");
  break;
  case 2:
  printf("星期二\n");
  break;
  case 3:
  printf("星期三\n");
  break;
  case 4:
  printf("星期四\n");
  break;
  case 5:
  printf("星期五\n");
  break;
  case 6:
  printf("星期六\n");
  break;
  case 7:
  printf("星期日\n");
  break;
  default:
  printf("bug!\n");
  break;
  } 
  return 0;
}


这样就能根据输出打印星期了。


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。


之后我还会输出更多高质量内容,欢迎收看。


文章知识点与官方知识档案匹配,可进一步学习相关知识


相关文章
|
4月前
|
C语言
|
4月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
5月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
5月前
|
C语言
深入探索C语言中的sizeof关键字
深入探索C语言中的sizeof关键字
|
5月前
|
存储 编译器 C语言
C语言中的关键字与标识符详解
C语言中的关键字与标识符详解
111 0
|
6月前
|
存储 C语言
【C语言】数据:数据类型关键字
【C语言】数据:数据类型关键字
|
6月前
|
存储 编译器 C语言
c语言中static关键字的作用
c语言中static关键字的作用
|
6月前
|
编译器 C语言 C++
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(下)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
47 0
|
6月前
|
存储 安全 编译器
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr(上)
从C语言到C++③(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for+nullptr
47 0
|
6月前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结