算数操作符、赋值操作符、单目操作符、强制类型转换
一、算术操作符(+
、 -
、 *
、 /
、 %
)
•+
-
*
/
%
操作符都是双⽬操作符
,有**两个操作数
**的符号就叫做双目操作符
10 + 4
| |
| |
操作数1 操作数2
// - % / * 以此类推
•操作符也被叫做:运算符
1. 符号+
、符号 -
和 符号*
•+
、 -
和*
分别用来完成加法、减法和乘法
2.符号/
•运算符/
⽤来完成除法
2.1 整数除法
2.2浮点数(小数)除法
•下⾯⽰例中,尽管变量 a
的类型是 float
(浮点数),但是 7 / 2
得到的结果是 3.000000,⽽不是3.500000 。原因就在于 C 语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
•当我们希望得到的结果是浮点数,那么两个运算数之间必须至少有一个是浮点数!](https://i-
3.符号%
•运算符 %
表⽰求模(余)运算,即返回两个整数相除的余值
•运算符%
只能⽤于整数,不能⽤于浮点数
3.1正数 和 负数 求模规则
•正数求模的规则与平常的运算一致
•负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定
二、赋值操作符 =
和 复合赋值操作符
1.赋值操作符=
•赋值操作符=
是⼀个随时可以给变量赋值的操作符
•在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值,要注意区分初始化和赋值的概念
1 int a = 0; // 这是初始化
2 int b = 12; //这是初始化
3 a = 12; //这是赋值,这里使用的是赋值操作符
2.连续赋值
1 int q = 2;
2 int w = 4;
3 int e = 0;
4 e = q = w - 2;// 连续赋值
•连续赋值写出的代码不容易理解,建议拆开来写,这样⽅便观察代码的执⾏细节,我们可以这样写
1 int q = 2;
2 int w = 4;
3 int e = 0;
4 e = q;
5 q = w - 2;
3.复合赋值符(+=
、-=
、*=
、/=
、%=
)
•符号+=
1 int a = 2;
2 int b = 4;
3 a = a + b;
4 //可以写成
5 a += b;
• -=
*=
/=
%=
同理
1 int a = 20;
2 int b = 2;
3 a -= b; //与 a = a - b;同理
4 a *= b; //与 a = a * b;同理
5 a /= b; //与 a = a / b;同理
6 a %= b; //与 a = a % b;同理
三、单目操作符(++
、--
、+
、-
)
•操作符只有⼀个操作数,被称为单⽬操作符。 ++、–、+(正)、-(负) 就是单⽬操作符
1.符号 ++
•在原先的值+1
1.1 前置++
•先+1
,后使用
1 int a = 2;
2 int b = 0;
3 b = ++a;
4 // 相当于
5 a = a + 1;
6 b = a;
7 //那么 b 就等于 3
• 用 printf
演示(printf
函数与++
和--
符号有个有趣的特性https://blog.csdn.net/Siri_s12/article/details/144295304?spm=1001.2014.3001.5501)
• ++
先运行a = 2 + 1 = 3,然后输出
1.2后置++
•先使用,再 +1
1 int a = 2;
2 int b = 0;
3 b = a++;
4 // 相当于
5 b = a;
6 a = a + 1;
7 //那么 b 就等于 2
• 用 printf
演示(printf
函数与++
和--
符号有个有趣的特性https://blog.csdn.net/Siri_s12/article/details/144295304?spm=1001.2014.3001.5501)
•第一个printf函数先输出 a = 2 后,++
运行 a = 2 + 1 = 3,所以第二个 printf输出的是3
2.符号--
•在原先的值-1
2.1前置--
•先 -1
,再使用
1 int a = 2;
2 int b = 0;
3 b = --a;
4 // 相当于
5 a = a - 1;
6 b = a;
7 //那么 b 就等于 1
• 用 printf
演示(printf
函数与++
和--
符号有个有趣的特性https://blog.csdn.net/Siri_s12/article/details/144295304?spm=1001.2014.3001.5501)
• --
先运行 a = 2 - 1 = 1,然后输出
2.2后置--
•先使用,再-1
1 int a = 2;
2 int b = 0;
3 b = a--;
4 // 相当于
5 b = a;
6 a = a - 1;
7 //那么 b 就等于 2
• 用 printf
演示(printf
函数与++
和--
符号有个有趣的特性https://blog.csdn.net/Siri_s12/article/details/144295304?spm=1001.2014.3001.5501)
•第一个printf函数先输出 a = 2 后,--
运行 a = 2 - 1 = 1,所以第二个 printf输出的是1
3.符号+
和符号-
•+
是正号,-
是负号,都是单⽬操作符
•运算符 +
对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错
1 int a = +2;
2 //相当于
3 int a = 2;
•运算符 -
⽤来改变⼀个值的正负号(用法与日常数学相同),负数的前⾯加上 - 就会得到正数,正数的前⾯加上 -
会得到负数
1 int a = 2;
2 int b = -a;
3 int c = -2;
4 printf("b=%d c=%d\n", b, c);//这⾥的b和c都是-2
5 int a = -2;
6 int b = -a;
7 printf("b=%d\n", b); //这⾥的b是2
四、强制类型转换 (类型)
•先看一段代码
•a
的是int类型, 5.21是double类型,两边的类型不⼀致,编译器会报警告
•为了消除这个警告,我们可以使⽤强制类型转换
•这时编译器就不会报错了
•将 5.21 强制类型转换为int类型,这种强制类型转换只取整数部分
•强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化就能实现代码,最好不过。