第二章 条件分支结构
1.1 运算符优先级
1.2 短路情况
编码时容易发生短路情况:
1. &&运算时左边的表达式如果为假(0),那么右边的表达式就不再运行。因为整个关系表达式的结果已经能够确定为假(0);
2. || 运算时左边的表达式如果为真(非0),那么右边的表达式也就不再运行。因为整个关系表达式的结果已经确定为真(1);
1.3 条件分支
<a> if~else
<b> if~else if~else
<c> switch....case
//查找今天是第几天数
int searchDay()
{
int year,month,day,sum=0;
printf("输入年,月,日:\n");
scanf("%d %d %d",&year,&month,&day);
for (int i=1; i<month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum += 31;
break;
case 2:
if (year % 4 ==0) {
sum += 29;
}else{
sum += 28;
}
break;
case 4:
case 6:
case 9:
case 11:
sum +=30;
break;
default:
break;
}
}
printf("今天是第%d天,星期%d\n",sum+day,(sum+day)%7+1);
return 0;
}
PS:(1.)所有的switch.....case 都能使用if~else if~else分支进行改写,但是反过来不一定成立。
(2.) C语言在运算时讲非0作为真,0作为假。