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

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

if else 组合

if else 的基本用法

#include 
int main()
{
  int flag = 1;
  if (flag == 1)
  {
  printf("flag = %d\n", flag);
  }
  else if (flag == 2)
  {
  printf("flag = %d\n", flag);
  }
  else
  {
  printf("flag = %d\n", flag);
  }
  return 0;
}


输出:


输出:flag = 1

当flag等于1的时候,打印的就是flag = 1;


当flag等于2的时候,打印的就是flag = 2;


当flag不等于1和2的时候,打印的就是flag 对应的值;


这就是if else 语句。


注释

我们平时用的注释方法:


//#include 
//
//int main()
//{
//  int flag = 1;
//  if (flag == 1)
//  {
//  printf("flag = %d", flag);
//  }
//  else if (flag == 2)
//  {
//  printf("flag = %d", flag);
//  }
//  else
//  {
//  printf("flag = %d", flag);
//  }
//  return 0;
//}


又或者是:


/*
#include 
int main()
{
  int flag = 1;
  if (flag == 1)
  {
  printf("flag = %d", flag);
  }
  else if (flag == 2)
  {
  printf("flag = %d", flag);
  }
  else
  {
  printf("flag = %d", flag);
  }
  return 0;
}
*/


其实,用if 语句也能巧妙的注释:


#include 
int main()
{
  if (0)
  {
  int flag = 1;
  if (flag == 1)
  {
    printf("flag = %d", flag);
  }
  else if (flag == 2)
  {
    printf("flag = %d", flag);
  }
  else
  {
    printf("flag = %d", flag);
  }
  }
  return 0;
}


当然,这种方式并不推荐。(容易出问题)


深入理解bool

C语言有没有bool类型?


c99之前,主要是c90没有, 但是c99引入了_Bool类型。


_Bool是一个类型,在新增头文件stdbool.h中,为了保证C/C++兼容性,被重新用宏写成了 bool。


例:

#include 
#include  
int main()
{
  bool ret = false;
  ret = true;
  printf("%d\n", sizeof(ret)); //vs2019 和 Linux中都是1
                                 //也就是占用了一个字节
  return 0;

}


我们通过查看源码深入了解一下bool。



在包含头文件后,就能使用bool,


false 表示假。


true 表示真。


float(double)与浮点数的比较

例:


#include 
int main()
{
  double x = 1.0;
  double y = 0.1;
  if ((x - 0.9) == 0.1)
  {
  printf("(x - 0.9) = 0.1\n");
  }
  else
  {
  printf("(x - 0.9) != 0.1\n");
  printf("%.50lf\n", x - 0.9);
  printf("%.50lf\n", 0.1);
  }
  return 0;
}


输出:


输出:

(x - 0.9) != 0.1

0.09999999999999997779553950749686919152736663818359

0.10000000000000000555111512312578270211815834045410

总结:浮点数存在精度丢失,是不能直接比较的。


我们可以通过C语言提供的最小精度,达成我们比较的目的:


例:


#include 
#include //提供最小精度值:DBL_EPSILON
int main()
{
  double x = 1.0;
  double y = 0.1;
  //if ((x - 0.9) == y)
  if ((x - 0.9 - y) < DBL_EPSILON)//如果成立,则(x - 0.9) = y
  {
  printf("(x - 0.9) = y\n");
  }
  else
  {
  printf("(x - 0.9) != 0.1\n");
  printf("%.50lf\n", x - 0.9);
  printf("%.50lf\n", 0.1);
  }
  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语言易混淆、简单算法、结构体题目练习、常见关键字总结