不同类型的变量与零究竟是如何比较(1)

简介: 不同类型的变量与零究竟是如何比较

1、什么是表达式、什么是语句

1.1什么是表达式

C语言中,用各种操作符把变量连起来,形成有意义的式子,就叫做表达式 。例如:a = b + c

1.2什么是语句  

在表达式后面加上一个分号,就形成了一个语句 。例如:a = b + c;

当然也不仅仅只有表达式后面加了分号的语句,还有类似与输入 输出 函数调用 等等语句。例如:scanf("%d",&a);  printf("%d",a); add(a,b);

只有一个分号  ;  的叫做 空语句

C语言中,用一对大括号 {} 括起来的多条语句称为复合语句,复合语句在语法上被认为是一条语句

注:大家只用记住语句是由分号结尾即可,除了复合语句


2.判断语句 是如何执行的

1.1  if

q1.png


首先执行表达式,表达式的值为真就执行 if 里面的语句,为假则不执行


1.2 单分支

q2.png


首先执行表达式,表达式的值为真就执行 if 里面的语句1,为假则执行else 里面的 语句2


1.3多分支

q3.png

首先判断表达式1,表达式1的值为真就执行 if 里面的语句1,为假则判断else if 里面的表达式2,表达式2的值为真则执行else if 里面语句2,为假则执行 else 里面的语句3


1.4嵌套

q4.png

首先判断表达式1,表达式1的值为真就执行 if 里面的语句1 然后判断里面的表达式x ,若表达式x为真则执行语句x,表达式x为假执行语句y 。表达式1为假则判断else if 里面的表达式2,表达式2的值为真则执行else if 里面语句2,表达式2为假则执行 else 里面的语句3


结论:


if 语句执行,先执行完成表达式的值,得到逻辑结果,在进行判定

C中0表示假,非0表示真

3.bool 变量与"零值"进行比较

3.1 C语言中有没有bool类型?

思考:C语言中有没有bool类型?


答案:c99 之前没有 bool 类型,主要是 c90 没有。但 c99 引入了_Bool 类型(_Bool 是一个类型,不过在新增头文件stdbool.h中,被重新用宏写成了 bool,为了保证C/C++兼容性)。


w1.png


bool 是一个真假类型:true 为真,false 为假


3.2 bool类型的变量占几个字节?

w2.png


上面测试中,我们可以看出 bool 类型的变量占一个字节 。


w3.png


小伙伴看到这可能就疑惑了,为什么大写的 BOOL 、TRUE 也可以运行,而且它的大小还是四个字节呢?那我们转到它的定义看看



q1.png

现在我们就知道为什么大写 BOOL 类型的变量占四个字节了,因为在源代码中,是这么定义的:typedef  int   BOOL;


注:这都是 Microsoft 自己搞的一套BOOL值。在vs中转到BOOL对应的头文件,翻到最上面,就能看到微软的版权信息。使用 BOOL 需要添加 #include 头文件。


我们一般写代码不仅仅是需要在自己使用的平台可以使用,还需要在其他平台可以使用,所以这就涉及到了跨平台,而 Microsoft 定义的专属类型,其他平台不支持,所以也就不支持使用


总结:


优先使用c90,就是我们之前以及后面一直用的方式(虽然c90并不支持 bool 类型,但它可以用整型表示真和假 ,0 为假 、非 0 为真)

万一非得使用bool,推荐c99标准,不推荐MS自定义。  

3.3 bool值与0比较如何比较?

#include<stdio.h>
#include<stdbool.h>
int main()
{
  bool a = true;
  if (1 == a)
  {
  printf("1\n");
  }
  if (true == a)
  {
  printf("2\n");
  }
  if (a)//推荐
  {
  printf("3\n");
  }
  return 0;
}


为什么推荐第3个 if 的写法呢?


答: a 本身就是是一个 bool 类型的值,本来就代表的真或假。


结论:bool类型,直接判定,不用操作符进行和特定值比较



相关文章
|
1月前
|
存储 开发者
如何确定常量的类型
在编程中,常量是程序中值不会改变的量。确定常量的类型是非常重要的,因为它直接影响了程序的效率和可读性。选择正确的常量类型可以确保程序占用更少的内存,运行更快,并且更容易理解和维护。
11 2
|
7月前
|
存储
3.2.6 怎样确定常量的类型
3.2.6 怎样确定常量的类型
30 0
|
1月前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
29 0
|
2月前
|
存储 编译器
C中的变量定义
C中的变量定义。
10 0
|
4月前
|
存储 算法 编译器
C++003-C++变量和数据类型2
C++003-C++变量和数据类型2
|
4月前
|
存储 算法 编译器
C++002-C++变量和数据类型1
C++002-C++变量和数据类型1
C++002-C++变量和数据类型1
|
4月前
对调 2个变量的值若干种方式
对调 2个变量的值若干种方式
11 0
|
6月前
|
存储 编译器
C 中的变量定义
C 中的变量定义。
37 1
|
10月前
|
存储 编译器 C语言
C++变量的定义
C++变量的定义

热门文章

最新文章