C/C++学习第四天——标准C基础操作符

yang-pig| 阅读:819 发表时间:2017-07-14 22:07:04 C语言

用操作符编写的表达式

逻辑表达式的计算结果一定是布尔值(真或假)

!是一个单目逻辑运算符,他表示求反操作

这个操作付应该写在一个布尔值的前面

他可以把真变成假,假变成真

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

如果一个逻辑表达式中同时包含多个双目逻辑操作符则他们之间会互相影响。

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

复杂的逻辑表达式可以用与&&和或||合并多个简单逻辑表达式得到

如果2个逻辑表达式中至少有一个的结果是真则用或||合并后的逻辑表达式结果也是真

只有两个逻辑表达式的结果都是真用与&&链接后的结果才是真

与(&&)和或(||)都具有短路的特征,如果前一个逻辑表达式的结果则计算机会忽略后面的逻辑表达式

男人的身高减去体重如果小于105算超重

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

~是一个单目位操作符,他可以把一个二进制中的每个数位变成相反内容

这个操作符叫做按位取反操作

双目位操作符包括&安位与,|安位或,以及^按位异或

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

按位与把对应的位内容做计算

只有对应数位上的都是1的时候才是1

按位或把对应数位内容做或计算只要对应数位中有1则结果就是1

^按位异或,对应的内容一样则结果是0,否则结果是1 

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

移位操作会得到一个新的数字,不会改变原来的数字

>> 表示向右移位操作

<< 表示向左移位操作

操作符左边的数字是将要进行移位操作的数字

操作符右边的数字是移位的位数

0000 0011

左移动2位

0000 1100

向左移动是空位上的位置一定补0

无符号左边补0,有符号左边补符号位

一般向左移动n位相当于乘以2的n次方,向右移动n位相当于除以2的n次方

&单目操作符使用,这个时候,他可以用来计算一个存储区的地址

这个操作符必须写在一个存储区内容前面

可以用%p占位符把地址数据打印在屏幕上

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

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

这个操作符可以在2个不同计算规则中人选一个

三目运算符可是

布尔值 ? 公式一 : 公式2

如果一个表达式中包含多个不同类型的数字则计算机会首先把他们转换成听一个类型然后计算

这个转换过程叫做影式转换,由计算机自动完成

如果多个数据在内存中所占的字节数不同,则一定会把站字节少的类型转换成站字节多的类型

如果不同数据在内存中所占的字节个数一样则把整数类型转成浮点类型,把有符号的转成无符号的

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

语法:(char)num

强制类型转换可能会导致数据内容丢失

分支语句可以在程序运行的时候从几组语句中选择一组执行

利用分支可以让程序在不同的时候得到不同的效果

利用if关键字编写分支语句

利用if关键字编写分支可以利用一个逻辑表达是的计算结果控制一组语句是否要执行

如果已经合并好的多个分支不可能都执行则可以把最后一个逻辑表达式连同if关键字一起省略

一个合并好的分支中不同逻辑表达式之间有前后顺序,只是当面的逻辑表达式结果为假时才计算后面的逻辑表达式

可以在编写分支的时候利用这一点简化后面的逻辑表达式

不可以把合并好的分支拆分成多个无关分支来理解

if分支联系i

#include <stdio.h>

int main() {

        int num = 0,num1 = 0, num2 = 0;

        printf("请输入三个数字:");

        scanf("%d%d%d",&num,&num1,&num2);

        if(num < num1) {

                if(num1 < num2) {

                        printf("最大数字是:%d\n",num2);

                }else {

                        printf("最大数字是:%d\n",num1);

                }

        }else {

                if(num < num2) {

                        printf("最大数字是:%d\n",num2);

                }else {

                        printf("最大数字是:%d\n",num);

                }

        }

        return 0;

}

switch ... case 语句也可以用来编写分支

如果一个分支里包含线个整数,每个整数需要使用一组语句处理,这种分支可以用switch语句

热门推荐