目录
exp1, exp2, exp3, ……expN --- 逗号表达式
exp1 ? exp2 : exp3 --- 条件操作符
条件操作符逻辑:
判断exp1的真假,exp1为真,exp2计算,exp3就不计算
exp1为假,exp2不计算,exp3计算
如果exp1的结果为真,那么exp2就是整个表达式的结果
如果exp1的结果为假,那么exp3就是整个表达式的结果
上代码演示:
利用if和else语句求两个整数中的较大值:
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
if (a > b)
printf("Max = %d", a);
else
printf("Max = %d", b);
return 0;
}
利用条件操作符求两个整数中的较大值:
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
int Max = a > b ? a : b;
printf("Max = %d\n", Max);
return 0;
}
代码分析:int Max = a > b ? a : b;
a大于b吗,a大于b的话a就是整个表达式的结果,a小于b的话b就是整个表达式的结果
代码验证:
exp1, exp2, exp3, ……expN --- 逗号表达式
逗号表达式逻辑:
逗号表达式是用逗号隔开的多个表达式
从左向右计算,整个逗号表达式的结果是最后一个表达式的结果
代码例子:
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
return 0;
}
代码分析:int c = a > b, a = b + 10, a, b = a + 1;
a > b:只是比较,没有赋值或改动
a = b + 10:b初始值为2,2+10的结果赋值给a,a的值就被赋值为12
b = a + 1:a被赋值为12,12+1的结果赋值给b,b的值就被赋值为13
由逗号表达式逻辑得知:整个逗号表达式的结果是最后一个表达式的结果,所以c为13
所以结果为:a = 12,b = 13,c = 13
代码验证: