初学c课程笔记整理2-->>运算符
是什么?有什么用?用在什么地方?(理解)
养成良好的编程习惯;
培养编程思想;
写代码之前应该先分析需求,分析完需求再开始写代码;(写注释)
1.运算符
运算符是告诉编译程序执行特定算术或逻辑操作的符号。
运算符分类:
按照功能划分:
算术运算符
关系运算符与逻辑运算符
按位运算符
运算符根据参与运算的操作数的个数分为 :
单目、双目、三目预算符。
优先级: (圆括号)优先
!(非) // 注意
↑
算术运算符 +、-、*、/、%
↑
关系运算符 >、<、<=、>=、==
↑
&&和|| // 注意
↑
赋值运算符 = 、+=、-=、*=、/=、%=
算数运算符
名称 | 符号 | 说明 |
---|---|---|
加法运算符 | + | 双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有左结合性。 |
减法运算符 | - | 双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合 性。 |
乘法运算符 | * | 双目运算符,具有左结合性。 |
除法运算符 | / | 双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型 |
求余运算符 (模运算符) | % | 双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于float或double 类型。求余运算的结果等于两数相除后的余数,整除时结果为0。 |
整数除于整数,求出来的结果依然是整数
浮点型赋值给整型会损失小数部分
%两侧必须都为整数
利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反
⚠️算数运算注意点
自动类型转换和强制类型转换。
⚠️求余预算注意:
m%n 求余,相当于m/n 获取余数
(1)n等于0 无意义
(2)m等于0 结果为0
(3)m>n 正常求余 如:8 % 3 = 2
(4)m<n 结果是m 如:2 % 4 = 2 1 % 4 = 1 3 % 8=3
运算结果的正负性取决于第一个运算数,跟后面的运算数无关
赋值运算符
简单赋值运算符: =
复合赋值运算符: +=、-=、*=、/=、%=
赋值表达式
什么是表达式?
将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的有意义 的式子称为表达式。
例如:算术表达式、逻辑表达式、字符表达式等。
表达式的特点:
表达式是一个意义的式子,所以一定有返回值
由“=”连接的式子称为赋值表达式。
例如: x = a + b;
等号=左边只能是变量,不能是常量,下面的写法是错误的:10 = 10 + 5;
凡是表达式可以出现的地方均可出现赋值表达式
赋值运算符的结合性
赋值运算符具有右结合性, 而且优先级比算术运算符低
例如: int a = 3 + 5; 会先计算3 + 5, 然后再把结果赋值给a
例如: int a = b = c = 5; 右结合性可理解为a=(b=(c=5))
复合赋值运算符
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。
+ /= 除后赋值 变量/=表达式 如:a/=3;即a=a/3
+ \*= 乘后赋值 变量\*=表达式 如:a\*=3;即a=a*3
+ %= 取模后赋值 变量%=表达式 如:a%=3;即a=a%3
+ += 加后赋值 变量+=表达式 如:a+=3;即a=a+3
+ -= 减后赋值 变量-=表达式 如:a-=3;即a=a-3
前缀表达式:++x, --x;其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表达式的值;即
“先变后用”
,也就是变量的值先变,再用变量的值参与运算。后缀表达式:x++, x--;先用x的当前值作为表达式的值,再进行自增自减1运算。即
“先用后
变”
,也就是先用变量的值参与运算,变量的值再进行自增自减变化。-
int num = 3 ++a a++ 表达式值 4 3 变量num值 4 4
自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整型、实型,还是字符型变量等,但不能用于表达式或常量。如:++(a+b), 与5++, const int N=0; N++; 等都是错误 的。 而i+++j++、++i+(++j)、++a+b++、++array[--j]等,这些都是合法的。
sizeof运算符
sizeof可以用来计算一个变量或一个常量、一种数据类型所占的内存字节数
格式: 用法:sizeof(常量/变量)
⚠️ 注意: sizeof不是一个函数, 是一个运算符.
“,”逗号运算符
格式:表达式1,表达式2,表达式3...
⚠️注意:
逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n
整个逗号表达式的值是最后一个表达式的值
关系运算符
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。
序号 | 运算符 | 结合性 | |
---|---|---|---|
1 | > | 大于 如:a>b a>3 5>4 1>2 | 左结合 |
2 | < | 小于 如:a<c d<3 2<5 | 左结合 |
3 | >= | 大于等于 如: a>=1 d>=c | 左结合 |
4 | <= | 小于等于 如: a<=0 i<=19 | 左结合 |
5 | == | 等于 i==3 a==b | 左结合 |
6 | != | 不等于 a!=b c!=5 | 左结合 |
关系运算符的运算结果只有2种:如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”。(判定常用)
⚠️关系运算符优先级
关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者
逻辑运算符
C语言中提供了三种逻辑运算符:
&&(与运算) 左结合性
||(或运算) 左结合性
!(非运算)
> 逻辑运算的结果只有2个:“真”为1,“假”为0
逻辑与
格式:
“条件A && 条件B”
运算结果:
只有当条件A和条件B都成立时,结果才为1,也就是“真”;其余情况的结果都为0,也就是“假”。因此,条件A或条件B只要有一个不成立,结果都为0,也就是“假”
口诀:一假则假
逻辑或
-格式:
“条件A || 条件B”
运算结果:
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立),结果就为1,也就是“真”;只有当条件A和条件B都不成立时,结果才为0,也就是“假”。
口诀:一真为真
逻辑非
格式:
“! 条件A”
运算结果:
其实就是对条件A进行取反:若条件A成立,结果就为0,即“假”;若条件A不成立,结果就为1,即“真”。也就是说:真的变假,假的变真。
口诀:真变假,假变真
按位运算符
用于二进制的运算,所以放在进制详细叙述。
按位与
"&"
按位或
"|"
左移
">>"
右移
"<<"
未来有你才精彩,你有未来不是梦!