利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反
??算数运算注意点
自动类型转换和强制类型转换。
??求余预算注意:
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,即“真”。也就是说:真的变假,假的变真。
口诀:真变假,假变真
&&(与运算) 左结合性
||(或运算) 左结合性
!(非运算)
> 逻辑运算的结果只有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,即“真”。也就是说:真的变假,假的变真。
口诀:真变假,假变真