<<<零基础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;
}
目录
另外,在这里给大家补充一个应该注意的一点
注意,注意,注意!!!
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
具体再来看个图
总结十四个字:先从左向右计算,再从右向左输出!!!
这是个易错点,大家一定要记住。
好了,接下来让我们继续下面的内容
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
}
意思就是
如果问好前面的条件如果为真,则返回冒号前面的,
如果问号后面的条件为假,则返回冒号后面的
1.4.6 位运算
这里不详细介绍,用具体的例子说明即可。
(1)按位与(&)
与,即两个为1返回1,否则为0
(2)按位或(|)
或,即只要有一个1就返回1
(3)按位异或(^)
异或,即相同返回0,不同返回1
(4)按位取反(~)
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)表达式中的隐含转换
在二元运算中,要求两个操作数的类型一致,如果参加运算的操作数类型不一致,则系统将自动对数据的类型进行转换,即,隐含转换,具体规则是
将低类型数据转换为高类型数据