635-C语言各种类型和零值比较

整数和零值比较

我们先解答个小疑惑:
在这里插入图片描述
编译器会自动默认给main函数增加一个return 0;
但是其他函数如果有返回值,就一定要写return语句!!!

在这里插入图片描述

我们看下面示例:
在这里插入图片描述
如果是short a,也可以比较,因为short也是整数,但是做关系运算,参与运算参数的类型必须一致,如果类型不一样,就是左边的类型要转成右边的类型 a(short)提升为int

我们看下面代码:
在这里插入图片描述
变成赋值表达式,现在相当于a是0,是false,这个if语句就永远进不去了

所以,编程规范如下:
在这里插入图片描述
下面这种写法编译器直接提示错误了:
在这里插入图片描述
如果是下面这样写:
在这里插入图片描述
变成赋值表达式,现在a是1,永远是真的,永远进入这个if语句

字符类型和零值比较

字符在本质上也是数字!!!
在这里插入图片描述
我们在代码写0和’\0’是一样的 都表示0
在这里插入图片描述
把字符转成整数:编码
把整数转为字符:解码

布尔类型和零值比较

在这里插入图片描述
在这里插入图片描述
原生的意思是:可以直接使用,不需要包含头文件,是编译器的内置类型。

我们在C文件中如何使用bool:
在这里插入图片描述
我们看看这个源代码:
在这里插入图片描述
C语言的true是1,false是0
在这里插入图片描述
因为bool是宏定义出来的,所以显示紫色。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bool值只有2个值:true,false

bool类型的比较千万不要这么写:
在这里插入图片描述
因为:
在这里插入图片描述
我们应该这么写:
在这里插入图片描述
因为在不同的系统上,非0可能都是true,也有可能只定义-1是true。
但是0一定是false

我们应该这么写:
在这里插入图片描述
关于逻辑取反:
在这里插入图片描述

下面这样写不好:因为a>b本身产生的关系表达式产生的结果就是逻辑值了!!!
在这里插入图片描述
我们应该这么写比较好:
在这里插入图片描述
bool本身就是逻辑值,true 或者 false

指针类型和零值比较

在这里插入图片描述
我们不要像下面这么写,虽然在C中没有问题,但是在C++有问题,C++对类型的匹配非常严格!!! 因为int*和int类型不匹配。
在这里插入图片描述
但是在C编译器中,地址是可以看作整数来理解的,因为是16进制表示的整数嘛。

我们应该像下面这么写:
在这里插入图片描述
在C++中,NULL是0
在C中,NULL是((void*)0)
在这里插入图片描述
在这里插入图片描述
指针占用的内存大小和类型是没有关系的,都是4字节(在32位系统下)
在这里插入图片描述
我们再看:
在这里插入图片描述
在这里插入图片描述
下面这种写法错误,相当于拿地址和a的内存的值比较
在这里插入图片描述
我们再看:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值