1.运算符与表达式
基本数据类型知道后,就是操作数据。要操作数据,就必须使用运算符和表达式。接下来就是C++运算符和表达式的相关知识点,
- 赋值运算
- 算术运算
- 关系运算
- 逻辑运算
- 逗号运算
- 位运算
- 移位运算
- sizeof运算
- 数据类型自动转换和强制转换
1.1表达式
表达式由运算符、操作数、括号等组成。
简单的表达式只包含一个数值,复杂的表达式包含多个操作数和多个运算符。
就是使用什么运算符就是什么表达式
举例说明:
123.456
i+10
x>=y
100>>2
x+(y*c)
C++中的运算符多数继承自C语言,新增加的运算符只有“::”(作用域运算符)和“->”(指向运算符)。
3.2 赋值运算符
x=20;
这就是赋值运算符。
程序中经常遇到的赋值符号“=”就是赋值运算符,就是将一个数据赋给一个变量
赋值表达式的一般形式为:
数据类型 变量名 = 表达式;
定义变量的同时为其赋值的操作称为赋初值,也叫做变量的初始化。
先定义变量,再进行变量的赋值操作也是可以的。
int x;//定义变量
x=20;//变量赋值
3.3算术运算符
算术运算符包括4个单目运算符(取正值、取负值、自增、自减)和5个双目运算符(加法、减法、乘法、除法和求余)。
expr表示使用运算符的对象,可以是表达式、变量或常量。
- “+”“−”作为加法和减法运算符用时为双目运算符,作为正值、负值运算符用时为单目运算符;
- 求余运算符“%”用于计算两个整数相除得到的余数,运算符的两侧均为整数,如7%4的结果是3;
- 使用除法运算符“/”时,除数不能为0,否则会产生溢出,处理器抛出异常;
- 自增运算符“++”和自减运算符“−−”对变量的操作效果分别是使变量增加1和减少1。
表达式求值时,按照运算符的优先级别从高到低依次执行。
单目正和单目负的优先级最高;
“*”“/”“%”的优先级高于“+”“−”;
括号在所有运算符中优先级最高,可以改变运算顺序。
当算术运算符的优先级相同时,结合方向为“自左向右”。
其实就是和数学中是一样的,有括号先算括号里面,剩下的就是加减乘除。
进行四则混合运算时,不同的数据类型会先自动转换成同一类型,然后再进行运算。
- (1)若所有操作数的数据类型相同,则表达式运算结果的数据类型和操作数的数据类型相同。例如,两个整型数相加,其结果仍然是一个整型数。
- (2)若操作数的数据类型不同,则表达式运算结果的数据类型取最高的数据类型,以保证数据精度不发生损失。
- 例如,混合运算10+'a'−1.5+3.2*6中出现了整型、字符型、浮点型,表达式的运算结果是浮点型。
3.4自增 自减运算符
自增运算符“++”和自减运算符“−−”对变量的操作效果分别是使变量增加1和减少1。
自增、自减运算符可以放在变量的前面,如++i、--i,这种情况称为前缀运算;
也可以放在变量的后面,如i++和i--,这种情况称为后缀运算。
两者对运算结果的影响是不一样的。
前缀运算中,变量先完成自增或自减运算,再以增减后的结果参与表达式运算;
后缀运算中,变量先参加表达式运算,之后再进行自增或自减。
当自增、自减运算符出现在表达式内部,作为运算的一部分时,前缀和后缀的运算结果差异很大。
其实就是++i是先自加再运算
i++是计算再自加
举例说明:
#include <iostream>
using namespace std;
int main(){int a=1,b=1;int c,d;c=a++; //a先赋值再自增,c为1d=++b; //b先自增加再赋值,d=2 cout<<"打印结果\n";cout<<c<<endl<<d;
}
打印结果
1
2