if
if(1),if(0)
int main(void) {
int a = 1;
if (a == 1) {
printf("qw");
}
return 0;
}
//结果是qw
int main(void) {
int a = 1;
//逗号的优先级低
if (a == 1, 0) {
printf("qw");
} else {
printf("er");
}
return 0;
}
//结果
er
int main(void) {
int a = 1;
if (a == 2) {
printf("a==2\n");
} else {
printf("qqqqq\n");
}
if (a = 2) {
printf("a=2\n");
} else {
printf("wwwww\n");
}
return 0;
}
答案
qqqqq
a=2
注意:java里只用一个=就可以,而c的=和==来区别赋值和判断
t条件运算符 :?
条件运算符是c语言中ifelse的简写形式,C中唯一一个三元运算符
形式:条件?真:假
int main(void) {
int a = 65;
a > 60 ? printf("及格") : printf("不及格");
return 0;
}
多个条件运算符嵌套
int main(void) {
int a = 59;//59结果是哈哈, 61结果是及格
a > 60 ? printf("及格") :a > 20 ? printf("哈哈") : printf("嘿嘿");
return 0;
}
重复录入学生的成绩,打出成绩评级,输入-1退出系统,输入非法数据提示重新输入,并重新输入,提示欢迎使用。
int main(void) {
printf("欢迎,请输入成绩\n");
while (1) {
int score;
scanf("%d", &score);
if (score == -1) {
break;
}
if (score > 100 || score < 0) {
printf("请重新输入\n");
continue;
}
if (score < 60) {
printf("不及格\n");
} else {
printf("及格\n");
}
}
printf("感谢使用\n");
return 0;
}
系统保证能连续通的话,就用while(1)死循环,就像android 的thread mian函数里面就是while()死循。
switch
switch按顺序扫描标签,发现标签中有匹配的,执行语句,break跳出语句,如果都没有匹配的,就进入default,执行语句,break跳出。
switch 标签值不能一样
image.png
int main(void) {
int a;
scanf("%d", &a);
switch (a) {
case 1: //case的值不能重复
printf("%D", a);
break;
case 2:
printf("%D", a);
break;
case 3:
printf("%D", a);
break;
case 4:
printf("%D", a);
break;
case 5:
printf("%D", a);
break;
default:
printf("hhhhh");
break;
}
printf("感谢使用\n");
return 0;
}
注意事项
- case 空格 标签:
- 必须要有break。没有break的话,语句会从匹配的标签开始,执行printf语句,一直执行到default里面的语句。
- 有一个循环,循环内有switch,switch有break,这个break只跳出switch,不跳出循环。
- case的标签要是整型常量表达式。
- switch里面的条件整形表达式:浮点型不行。
- default 可以不写哦,不写就没有默认处理。
- 标签不能重复。
goto
找到goto标签的地方,从那里开始顺序执行语句。
int main(void) {
adcd:
printf("哈哈哈\n"); //循环打印哈哈哈哈
goto adcd;//
return 0;
}
int main(void) {
goto adcd;//
printf("哈哈哈\n"); //不执行哈哈哈了
adcd:
printf("呵呵\n"); // 执行一遍呵呵
return 0;
}
网友评论