一、赋值操作符
在变量创建的时候给一个初始值叫初始化。在变量创建好后,再给⼀个值,这叫赋值。
int a = 100 ; //这叫初始化
a = 200 ; //这叫赋值, = 就是赋值操作符
赋值操作符 = 是⼀个随时可以给变量(不能是常量)赋值的操作符,赋值操作符是把右边的值赋值给左边。
1、连续赋值
int a = 3 ;
int b = 5 ;
int c = 0 ;
c = b = a + 3 ; //连续赋值,规则是从左往右依次赋值
虽然C++支持这种连续赋值,但是写出的代码不容易理解,而且不容易逐步观察,所以建议还是拆开来写,这样方便观察代码的执行细节。即:
int a = 3 ;
int b = 5 ;
int c = 0 ;
b = a + 3;
c = b;
这样写,在调试的时候,每⼀次赋值的细节都是可以很方便的观察的。
2、复合赋值符
在写代码时,我们经常可能对一个数进行自增、自减的操作,如以下代码:
int a = 10 ;
a = a + 3 ;
a = a - 2 ;
对于这种对一个数进行自增、自减的操作,C++提供了更方便的写法,即:
int a = 10 ;
a += 3 ;
a -= 2 ;
C++中提供了复合赋值符,方便我们编写代码,这些赋值符有:
复合赋值符 | 样例 |
---|---|
+= | a += 10 |
-= | a -= 10 |
*= | a *= 10 |
/= | a /= 10 |
%= | a %= 10 |
>>= | a >>= 1 |
<<= | a <<= 1 |
&= | a &= 10 |
|= | a |= 10 |
^= | a ^= 10 |
二、类型转换
在使用 C++ 写代码的时候,不同类型的数据进行混合计算的时候,或者赋值时等号两边的类型不 统⼀的时候,都会发生类型转换,这时就需要根据类型的转换规则转换成合适的类型,然后再进行计算或赋值。
1、混合运算时的类型转换
字符、整数、浮点数可以混合运算,在混合运算的情况下首先要将不一致的数据类型进行转换,类型统一后才能进行计算。(这些转换都是隐式自动发生的,有些编译器会报警告)
这里边一般涉及两类转换:整型提升和算术转换。
(1)整型提升:表达式之中的 char 和 short 类型一定会先转换成 int 类型,然后参与运算。
(2)算术转换:表达式中出现下面的任意两种类型的值进行计算的时候,要先要将小类型转换成大类型后,才能进行计算。
long double <-- double <-- float <-- unsigned long int <-- long int <-- unsigned int <-- int
2、赋值时类型转换
当赋值操作符两端的数据类型不一致的时候,就需要类型转换,这种转换也是隐式自动发生的。
转换规则如下:
(1)float 和 double 赋值给 int ,直接截断小数部分,保留整数部分;
(2)较小的类型转换为较大的类型,直接转换,值不变。(可以理解为,较大的类型存的下较小类型,所以直接转换就可以了)
(3)较大的类型转换为较小的类型,⼀般会发生截断,按照较小类型的长度,较大的类型保留低位数据给较小的类型。(较小的类型不一定能存的下较大的类型)
3、强制类型转换
在 C++ 中存在强制类型转换,根据实际的需要将某一数据的数据类型转换为指定的数据类型,强制类型转换是临时转换,不影响变量本身的类型。语法形式如下:
(类型名)表达式
如:
double d = 3.14 ;
int a = (int)d ;
上面的代码是将 double 类型的 3.14 转换成 int 类型的值,然后赋值给 a 。
三、单目操作符
一些操作符只有一个操作数,被称为单目操作符。如 ++、--、+(正)、-(负) 就是单目操作符。
1、++和--
++ 是一种自增的操作符,分为前置 ++ 和后置 ++;-- 是一种自减的操作符,分为前置--和后置--。
前置 ++ 或者 后置 ++,都是会让操作数自增 1 的;前置 -- 或者 后置 --,都是会让操作数自减 1 的。
(1)前置 ++ 和后置 ++
前置 ++ :先 +1,后使用;
后置 ++ :先使用,后 +1。
(2)前置 -- 和后置 --
前置 -- :先 - 1,后使用;
后置 -- :先使用,后 - 1。
2、+和-
这⾥的 + 是正号, - 是负号,它们都是单目操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,当然写了也不会报错。
运算符 - 是用来改变一个值的正负号:负数的前面加上 - 就会得到正数,正数的前面加上 - 会得到负数。