运算符与结合性
总结优先级由高到低为:
初等运算符——>单目运算符——>算数运算符——>关系运算符——>逻辑运算符——>条件运算符——>赋值运算符——>逗号运算符
一、关系表达式
1. 运算规则
运算结果 真假<——>关系是否成立
表达式的结果是一个逻辑值,即“真”或“假”。如关系表达式 3==5 的值为假, 3>0 的值为真,在C的逻辑中,“1”代表"真","0"代表"假"。
2. 优先级
优先级计算如上表
a>b==c 等效于 (a>b)==c
例:
int a=3,b=2,c=1;
d=a>b>c;//d=(a>b>c),3>2-->1, 1>1为假,d=0
二、逻辑运算符和逻辑表达式
1. 符号及其表达式
逻辑符号 | 名称 | 表达式 | 功能说明 | |
双目 | && | 与 | a&&b | 一假则假 |
|| | 或 | a||b | 一真则真 | |
单目 | ! | 非 | !a | 取反,真则假,假则真 |
2. 注意事项
1.左侧优先
逻辑符号左侧的表达式优先计算
2. 优先级
表达式内含有多个逻辑符号,!的优先级最高
3. 逻辑与和或具有截断特性
int a=2, b=3;
int r1,r2;
r1 = !a && --b; //!a=0,与表达式的结果可知为0,与号右侧的表达式 --b不再计算,b的值保持不变
printf("%d",r1);
r2 = a || --b; //a非0,或表达式的结果已知为1,或号右侧表达式 --b不再计算,b的值不变
printf("%d",r2);
当逻辑符号左侧的表达式可以决定整个逻辑表达式的结果时,逻辑符号右侧的表达式不再运算
三、if语句
1. 语句表达式
1. 单分支
if(条件语句)
{
执行语句;(可以是多条)
}
2. 双分支
if( )
{
执行语句;
}
else
{
执行语句;
}
3. 多分支
if( )
{
}
else if( )
{
}
……
else if()
{
}
2. 条件运算符
1.一般形式
表达式1 ?表达式2:表达式3;
1式为真,表达式的值为2式;1式为假,表达式的值取3式的结果
int a=1,b=2;
int r;
r=a>b ? a:b; //a>b为假,r=b=2
2. 注意事项
1. 条件表达式运算方向
从右到左
a>b ? a : c>d ? d:e
等效于 a>b ? a: ( c>d ? d:e )
2. 表达式1的类型可以与1、2式不同
int x;
scanf("%d",&x);
char m = 'a',n = 'c';
x>0 ? m:n; // x为int型,m,n为char型
四、switch语句
1.一般形式
switch(表达式) ——表达式类型为整型
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
……
case 常量表达式n:语句n;
default: 语句 n+1;
}
2.注意事项
1.break语句
功能:执行一个case分支后,跳出switch结构,即终止switch语句运行
int n,a;
switch(n)
{
case 1:
a=1;
break; //若n=1,执行case1,结束后跳出switch,不再执行case2
case 2:
a=2;
break;
}
2.一对一
case、default 相当于语句的标签,一个标签只能对应一个语句
标签:语句,运算符,逻辑,int,程序结构,选择,case,设计,表达式 From: https://blog.csdn.net/weixin_65079847/article/details/145168880