目录
一:赋值运算符与赋值表达式
变量=表达式
特点:自右向左
a=b=c=0
"""
作用是先把0赋给 c,再赋给 b,最后赋给 a。
这条语句是正确的,这是因为既然赋值是运算符,那么多个赋值就可以串联在一起。
运算符“=”是右结合的,即“自右向左”进行运算,所以上述赋值表达式等价于:
a=(b=(c=0));
"""
二:逗号运算符和逗号运算符
eg: 1.逗号表达式从 左到了右
2.逗号运算符在全部运算符里优先级最低
a=3,b=2
c=(a+b,a-b);
/*依次计算表达式 a+b 和 a-b 的值,先将a+b值赋给c,在将 a-b的值赋给变量c,所以c=1
#逗号运算符在全部运算符里优先级最低,因此最好将整个逗号表达式用圆括号括起来,否则意义可能会不同。例如:
a=3,b=2
c=a+b,a-b #c的值为 5
#逗号运算符结合律为自左向右。因此如果前后表达式用到相同的变量,
# 则前面表达式中变量值如果发生了变化,将会影响后面的表达式。例如:
a=2
x=(a*=3,a+12); #/*x 的值为 18,先计算 aa*3 等于 6,然后再计算 a12 等于18*/
三:关系运算符和关系表达式
序号 | 符号 | 功能 | 优先级 |
1 | > | 大于 | 优先级相同(高) |
2 | >= | 大于等于 | |
3 | < | 小于 | |
4 | <= | 小于等于 | |
5 | == | 等于 | |
6 | != | 不等于 | 优先级相同(低) |
特点:1 从左到右
2 算数运算符>关系运算符>赋值运算符
"""
算术表达式:+,-,*,/,%,++,--;
在表达式中使用算术运算符,则将表达式称为算术表达式,
算术表达式的计算根据运算符的优先级从高到低依次执行。
算术运算符的优先级和基本四则运算法则一致,先乘除后加减,模运算符与乘除同级。
对于一个运算量两侧同优先级的运算符,按结合律方向进行。算术运算符的结合律皆为左结合性,
自左向右
"""
"""
在C语言的逻辑运算中,以“1”代表“真”,以“0”代表“假”。
若a=1,b=1,c=2,则:关系表达式 a>b 的值为“假”,表达式的值为 0;
关系表达式 a=b 的值为“真”,表达式的值为 1;
关系表达式 a<=b+c 的值为“真”,
因为 b+c 的值为 3,所以 a<=3 的值为“真”,表达式的值为 1;
关系表达式 a=c>b 的值为“真”,因为c>b 的值为 1,等于 a 的值,所以表达式的值为真,为1;
关系表达式 a=b>c的值为“假”,因为 b>c 的值为 0,所以赋值后 a 的值为 0,整个表达式的值也为0。
"""
"""
要注意 C语言中的关系运算与数学领域中的比较运算是有区别的,
例如:若a=1,b=2,c=3,则关系表达式c<a<b 的值为“真”,
在c语言语言中:算数运算符从左到右,先计算c<a为假,所有变为0,然后在0<b为真
"""
四:逻辑运算符和逻辑表达式
运算符 | 意思 |
&& | 和;相当于python中的and |
|| | 或;相当于python中的or |
! | 非;相当于python中的! |
特点: 1: 三种运算符的优先级由高到低依次为:!>&&>|| 非或和
2: !(非)>算术运算符>关系运算符一>&&>|| >赋值运算符
3:&&,||从左到右; !从右到左
"""
a>c&&a<b等效于(a>c)&&(a<b)
a==b||x>y 等效于(a==b)||(x>y)
a<b||!a 等效于(a<b)||(!a)
a>c&&a<b+c 等效于(a>c)&&(a<(b+c))
2<3&&6>3>!0 等效于(2<3)&&(6>(3-!0))
"""
五:条件运算符和条件表达式
"""
表达式1?表达式 2:表达式3
条件表达式的执行过程是:若表达式1为真,则条件表达式的值等于表达式 2的值,否则为3的值
"""
特点:1: !(非)>算术运算符>关系运算符一>&&>|| >条件运算符>赋值运算符>逗号运算符
2 :条件运算符的结合性为从右到左,当有条件运算符嵌套时,按照从右到左的顺
""" a=1;b=2 a<b?(c=3):a>b?(c=4):(c=5) 该表达式的值为 3; 变量 c的值也为 3。首先计算表达式 a>b?(c-4):(c=5),因为 a>b为假,所以这一条件表达式的结果为 5,此时 c=5; 接着计算 a<b?(c=3):5,因为 a<b 为真所以这一条件表达式的结果为 3, 此时 c=3。 条件表达式中表达式 1 一般是关系表达式,表达式 2 和表达式 3 不仅可以是数值表达式,还可以是赋值表达式或函数 表达式。例如:a>b?printf("d",a):printf("%d",b) """
六:格式字符
六:scanf错误解决
在vs中可能会出现scanf报错,加上一句代码即可
#define _CRT_SECURE_NO_WARNINGS 1
七:总结
只有在:赋值运算 ,! , 条件运算符的结合性为从右到左,当有条件运算符嵌套时,按照从右到左的顺从右到左 为从右到左; 剩下的都是从左到右