#include<stdio.h>
int main()
{
int a = 6, b = 1;
int c, d;
c = a == 6 && b++ == 1;// 执行完了整个表达式
printf("a = %d,b = %d,c = %d\n", a, b, c);
d = a == 6 || b++ == 1;// 只执行了表达式的前半部分
printf("a = %d,b = %d,d = %d\n", a, b, d);
return 0;
}
条件运算符
条件运算符的优先级高于赋值运算符,但是低于其他运算符。
条件运算符是自右向左结合的。
条件运算符的格式:w < x ? x : w; 如果w < x成立,那么输出x,否则输出w。
逗号运算
逗号用来连接两个表达式,并以其右边的表达式的值作为它的运算结果。
逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算。
逗号的组合关系是自左向右,所以左边的表达式会先计算,而由边的表达式的值就留下来作为逗号运算的结果。
#include<stdio.h>
int main()
{
int i = 0, j = 0, k = 0;
i = (3 + 4, 5 + 6);
printf("i = %d\n", i);
j = (j + 2, 3 + 8);
printf("j = %d\n", j);
k = (k + 1, k + 4, k * 4);
printf("k = %d\n", k);
return 0;
}
级联和嵌套的判断
判断3个数中的最大数:
#include<stdio.h>
int main()
{
int a, b, c;
printf("请输入你要比较的3个正整数:");
scanf("%d %d %d", &a, &b, &c);
int max = 0;
if (a > b)
if (a > c)
max = a;
else
max = c;
else
if (b > c)
max = b;
else
max = c;
printf("The max is %d\n", max);
return 0;
}
当 if 的条件满足或者不满足的时候要执行的语句也可以是一条 if 或 if-else 与,这就是嵌套的 if 语句。
没有 {…} 的情况下 else 总和最近的 if 相匹配。
多路分支
switch-case多路分支语句格式: switch (控制表达式) {
case 常量:
语句;
…
case 常量:
语句;
…
default:
语句;
…
}