Hello,小伙伴们大家好,今天开始进入C语言第四课时的学习。进入今天正式内容之前呢,先来看一下上次课程中的留下的一道练习题。

作业:

1.编写程序从键盘得到四个整数,计算他们的求和结果并打印在屏幕上

c语言数据类型转换(C语言入门教程四)(1)

1.操作符(逻辑操作符,位操作符和三目操作符)

逻辑操作符用来编写逻辑表达式

逻辑表达式的计算结果一定是布尔值

!是一个单目逻辑操作符,它表示对一个布尔值求反(真变假,假变真)

这个操作符使用的时候要写在一个布尔值的前面

双目逻辑操作符包括==(等于),!=(不等于),>(大于),<(小于),>=(大于等于)和<=(小于等于)

最多包含一个双目逻辑操作符的表达式叫简单逻辑表达式

C语言中如果一个逻辑表达式里包含多个双目逻辑操作符则必须拆分成多个简单逻辑表达式,然后再合并可以使用与(&&)和或(||)把两个逻辑表达式合并成一个新的逻辑表达式

如果两个逻辑表达式的结果都是真则用与(&&)链接后结果才是真,否则结果是假

如果两个逻辑表达式的结果中有一个是真则用或(||)链接后结果就是真,否则是假

与(&&)和或(||)都具有短路特性(如果前一个逻辑表达式可以决定整个表达式的结果则后一个逻辑表达式根本就不计算)

位操作符可以直接操作二进制数位

~是一个单目位操作符,它可以把二进制中的每个数位求反(按位求反)

这个操作符应该写在一个数字前面

c语言数据类型转换(C语言入门教程四)(2)

双目位操作符包括按位与(&),按位或(|)和按位异或(^)

他们可以把两个数字对应二进制数位上的内容进行计算

按位与可以把对应二进制数位进行与计算只要一个数位的内容是0则结果就是0

3 0000 0011

& 5 0000 0101

0000 0001

按位或可以把对应二进制数位进行或计算,只要一个数位的内容是1则结果就是1

3 0000 0011

| 5 0000 0101

0000 0111

按位异或可以把对应二进制数位进行异或计算

如果两个数位内容一样则结果是0,否则结果是1

3 0000 0011

^ 5 0000 0101

0000 0110

移位操作可以把一个数字中所有二进制数位统一向左或者向右移动n个位置

>>表示向右移位操作

<<表示向左移位操作

它们都是双目位操作符

操作符左边是将要进行移位操作的数字,操作符右边是移动的位数移位操作相当于把每个数位上的内容放到另外一个数位里

移位操作不会修改任何存储区的内容,它会得到一个新数字,这个新数字就是移位操作以后的结果向左移位时右边空出来的位置上一定补充0

有符号类型数据向右移位时左边空出来的位置上补充符号位,无符号类型数据向右移位是左边空出来的位置上补充0

c语言数据类型转换(C语言入门教程四)(3)

一般情况下向左移动n个位置相当于数字乘以2的n次方,向右移动n个位置相当于除以2的n次方

&也可以作为单目操作符使用,这个时候它可以用来计算一个存储区的地址这个操作符应该写在一个存储区的前面可以使用%p作为占位符把地址数据打印在屏幕上

在我们的计算机上所有地址数据都是32个二进制数位

*也可以作为单目操作符使用,这个时候它可以根据地址数据找到对应的存储区

c语言数据类型转换(C语言入门教程四)(4)

这个操作符应该写在一个地址数据前面三目操作符可以从两个计算规则中选择一个使用三目操作符格式如下

布尔值 ? 公式一 : 公式二

如果布尔值为真则采用公式一计算结果,否则采用公式二计算结果不要在问号后面写赋值操作符

练习:

1.用三目表达式改写超重逻辑表达式

c语言数据类型转换(C语言入门教程四)(5)

2.类型转换

如果表达式中所包含的数字类型不同则计算机会首先把他们转换成同一类型,然后才进行计算

这个转换过程叫隐式类型转换,完全由计算机完成

在隐式类型转换中一定把占地小的类型转换成占地大的类型

如果不同数字的大小一样则把整数类型转换成浮点类型,把有符号类型转换成无符号类型

在C语言程序中可以给数字指定一个类型,这叫做强制类型转换

强制类型转换语法如下

(char)num

强制类型转换有可能造成数据丢失

类型转换不会修改任何存储区的内容,计算机会使用一个新存储区记录转换后的数字,然后用这个新存储区做其他计算

c语言数据类型转换(C语言入门教程四)(6)

好了今天的内容就到这了,今天的内容好好理解消化即可。就不留作业了,有问题可以留言评论有时间我会给大家回复的哦~~另外希望大家多多转发关注支持。。。。

,