<<<零基础C++速成>>>

 hello,大家好,又见面了

首先,让我们再次回顾一下上节的内容

#include<iostream>   //预处理指令
using namespace std;   //引用命名空间
int main()      //主函数
{    
    int a=1,b=1;
    cout<<++a<<endl;   //先自增,即输出结果为 2
    cout<<--b<<endl;   //先自减,即输出结果为 0

    int i=1,j=1;
    cout<<i++<<endl;   //先输出i的初始值,再自增。即这句输出结果为 1
    cout<<j--<<endl;   //先输出j的初始值,再自减。即这句输出结果为 1
    cout<<i<<endl;   //i为自增后的值,即输出为 2
    cout<<j<<endl;   //j为自减后的值,即输出为 0
    return 0;
}

目录

1.4.4 关系表达式和逻辑表达式

1.4.5 条件表达式

1.4.6 位运算

(1)按位与(&)

(2)按位或(|)

(3)按位异或(^)

(4)按位取反(~)

1.4.7 运算符的优先级

1.4.8 强制类型转换

(1)表达式中的隐含转换


 

 

 

 

 

 


另外,在这里给大家补充一个应该注意的一点

注意,注意,注意!!!

cout<<……<<……<<……<<endl;

cout的输出顺序是从左向右的,但是!但是计算顺序是从右向左的,

什么意思呢?让我们具体看一个例子

#include<iostream>   //预处理指令
using namespace std;   //引用命名空间
int main()      //主函数
{    
    int i=3,j=4;
    cout<<i<<" "<<i++<<endl;   //先进行从右向左计算i++,再从左向右输出
    cout<<j<<" "<<j--<<endl;  
    return 0;
}

​/*
输出结果为:
4 3
3 4

 

具体再来看个图

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_20,color_FFFFFF,t_70,g_se,x_16

总结十四个字:先从右向左计算,再从左向右输出!!!

这是个易错点,大家一定要记住。

好了,接下来让我们继续下面的内容

1.4.4 关系表达式和逻辑表达式

关系运算符,就是那些比较关系的,由这些关系运算符构成的式子即关系表达式

名称符号优先级
大于>较高(相同)
小于<
小于等于<=
大于等于>=
等于==较低(相同)
不等于!=

注意:“==”是两个连等号,不要误写成“=”

再给大家看一下逻辑运算符

符号名称优先级
1
&&2
||3

 

非就是不的意思,就像前面的比较运算符(!=)非等于,就是不等于

与就是and的意思,只有当两个都是true才返回true,否则都是false

或就是,两者中一个满足即可,只要有一个true返回true。

相信大家在数学里都知道这些,就不在详细介绍了。

1.4.5 条件表达式

大家还记得前面的一元运算符,二元运算符吗?,不记得的话,快回去看看吧

接下来,为大家介绍C++中的唯一一个!!!——  三元运算符(?:)

<条件表达式> ?<表达式1> :<表达式2>

运算规则是怎样的呢

举个简单的例子

#include<iostream>   //预处理指令
using namespace std;   //引用命名空间
int main()      //主函数
{
    int i = 3, j = 4,a;
    a = i > j ? j : i;    //如果i>j为真,则返回冒号前面的,即j;
                          //如果i>j为假,则返回冒号后面的,即i。
    cout<<a<<endl;        //输出结果为 4
}

意思就是

如果问好前面的条件如果为真,则返回冒号前面的,

如果问号后面的条件为假,则返回冒号后面的

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_14,color_FFFFFF,t_70,g_se,x_16

 

1.4.6 位运算

这里不详细介绍,用具体的例子说明即可。

(1)按位与(&)

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_20,color_FFFFFF,t_70,g_se,x_16

 与,即两个为1返回1,否则为0

(2)按位或(|)

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_12,color_FFFFFF,t_70,g_se,x_16

或,即只要有一个1就返回1

 

(3)按位异或(^)

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_11,color_FFFFFF,t_70,g_se,x_16

异或,即相同返回0,不同返回1

(4)按位取反(~)

833f43379e204e158f5462b1ba07acfc.png

0变1,1变0 

1.4.7 运算符的优先级

优先级运算符结合性
1[ ] () . - > 后置--  后置--从左到右
2前置++ 前置-- sizeof & * + - ~ !从右到左
3强制转化类型从右到左
4* / %从左到右
5<< >>从左到右
6< > <= >= 从左到右
7==  !=从左到右
8&从左到右
9^从左到右
10|从左到右
11&&从左到右
12||从左到右
13?:从右到左
14= *= /= %= += -= <<= >>= &= ^= |=从右到左
15,(逗号)从左到右

 

1.4.8 强制类型转换

规则如下

<类型标识符>(表达式)或者(类型标识符)<表达式>

强制类型转换的作用是将<表达式结果的类型>转换为(类型标识符)所指定的类型。

cout<<7 %(int)2.5;  //将2.5强制转换成int型2,等价于7%2

(1)表达式中的隐含转换

在二元运算中,要求两个操作数的类型一致,如果参加运算的操作数类型不一致,则系统将自动对数据的类型进行转换,即,隐含转换,具体规则是

将低类型数据转换为高类型数据

watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBATGlvbuS4tkRyZWFt,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lion丶Dream

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

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

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

打赏作者

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

抵扣说明:

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

余额充值