Switch语句未编译
你好,我已经在这里坐了很长一段时间,试图找出为什么这不起作用,但我没有成功的运气Switch语句未编译,c,switch-statement,C,Switch Statement,你好,我已经在这里坐了很长一段时间,试图找出为什么这不起作用,但我没有成功的运气 #include <stdio.h> main(void) { int mark; printf("Please enter the mark\n"); scanf("%d", &mark); switch(mark){ case (mark <40): printf("That's a fail");
#include <stdio.h>
main(void)
{
int mark;
printf("Please enter the mark\n");
scanf("%d", &mark);
switch(mark){
case (mark <40):
printf("That's a fail");
break;
case (mark >=40 && <60):
printf("That's a pass");
break;
case (mark >=60 && <70):
printf("That's a merit");
break;
case (mark >=70):
printf("That's a distinction");
break;
}
}
#包括
主(空)
{
整数标记;
printf(“请输入标记\n”);
scanf(“%d”,标记(&M);
开关(标记){
案例(mark=40&&=60&&=70):
printf(“这是一种区别”);
打破
}
}
它工作正常,编译器阻止您编译无效的C语言
case
标签必须是实际的整数常量,而不是进行进一步计算的表达式
您应该使用
if
/else if
检查您的各种情况。工作正常,编译器阻止您编译无效的C
case
标签必须是实际的整数常量,而不是进行进一步计算的表达式
您应该使用
if
/else if
来检查各种情况。对于精确值未知的比较,请使用if-else块。您试图像if-else块一样使用switch语句,但它不能正常工作。一个合适的开关看起来像
switch(mark) {
case 40: //if mark is 40, no more, no less
...
case 60: //same
...
}
因为你不想写出40行都指向同一条语句,只要使用
if(mark < 40) { ... }
else if(mark < 60) { ... }
if(标记<40){…}
如果(标记<60){…}
对于精确值未知的比较,请使用if-else块。您试图像if-else块一样使用switch语句,但它不能正常工作。一个合适的开关看起来像
switch(mark) {
case 40: //if mark is 40, no more, no less
...
case 60: //same
...
}
因为你不想写出40行都指向同一条语句,只要使用
if(mark < 40) { ... }
else if(mark < 60) { ... }
if(标记<40){…}
如果(标记<60){…}
来自K&R:
switch语句是一个多路判定,用于测试表达式是否匹配多个常量整数值中的一个,并相应地进行分支
也就是说,你不能做你想做的事。每种情况都需要一个常量语句,例如简单的int或char值
对于你想做的事,你需要if/else。另外,请参阅jaap关于布尔语句正确语法的回答。来自K&R:
switch语句是一个多路判定,用于测试表达式是否匹配多个常量整数值中的一个,并相应地进行分支
也就是说,你不能做你想做的事。每种情况都需要一个常量语句,例如简单的int或char值
对于你想做的事,你需要if/else。另外,请参阅jaap关于布尔语句正确语法的回答。当你说“不起作用”时,你的确切意思是什么?好吧,我必须诚实地说:DIt在编译器中产生了一个错误,供将来参考,可能还包括编译器错误。你也可以在谷歌上搜索错误,也许还能找到答案。使用if/else buddy,当你说“不起作用”时,你的意思是什么?好吧,我必须诚实地说:DIt在编译器中产生了一个错误,将来参考可能也会包括编译器错误。你也可以在谷歌上搜索错误,或许也能找到答案switch@SzymonZmudzki如果这对你有帮助,考虑点击答案旁边的复选标记。@ SzymonZmudzki,如果这对你有帮助,考虑点击答案旁边的复选标记。