| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1430 人关注过本帖
标题:switch函数一个问题
只看楼主 加入收藏
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
收藏
已结贴  问题点数:3 回复次数:5 
switch函数一个问题
#include<stdio.h>
int main()
{
char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{

case'r0':printf("85~100\n");break;
case'02':printf("70~84\n");break;
case'03':printf("60~69\n");break;
case'04':printf("<60\n");break;
default:printf("enter data erroe!\n");
}
return 0;
}
我故意改了一下第一行的case中‘r0’,没有用'01',这样结果怎么回事?为什么会有”enter data erroe!“ ?
2016-11-08 20:49
syl411120229
Rank: 2
等 级:论坛游民
帖 子:8
专家分:30
注 册:2016-11-7
收藏
得分:2 
switch 后面需要整型常量,grade不能确保是整型常量。
2016-11-08 20:58
时光轴
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2016-11-8
收藏
得分:0 
我也是刚开始学,参与下讨论,我觉得是这样
char定义占据1个字节,8位,
'r0'在存储时按照二进制码存储,
r占用一个字节,0占用1个字节,
已经超出-2^7-2^7-1的范围,因此认定输入属于除去case之外的其他情况,就输出enter data erroe!了
不知道说的对不对
2016-11-09 10:33
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:1 
回复 2楼 syl411120229
switch的条件支持char, int, short, long类型,不支持float,double。

早知做人那么辛苦!  当初不应该下凡
2016-11-09 10:42
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 楼主 troyzyc

#include<stdio.h>
 int main()
 {
 char grade;
 scanf("%c",&grade);
 printf("Your score:");
 switch(grade)
 {

 case'0':printf("85~100\n");break;
 case'2':printf("70~84\n");break;
 case'3':printf("60~69\n");break;
 case'4':printf("<60\n");break;
 default:printf("enter data erroe!\n");
 }
 return 0;
 }

早知做人那么辛苦!  当初不应该下凡
2016-11-09 10:48
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
首先吧,switch不是函数。。。然后,r0是两个字符,case后面只能是一个数字或者一个字符,不能是两个字符甚至是字符串,小数也不行的
2016-11-10 10:24
快速回复:switch函数一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017849 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved