| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1140 人关注过本帖
标题:就因为一个变量定义为int型,char型,结果出现偏差
只看楼主 加入收藏
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
结帖率:100%
收藏
 问题点数:0 回复次数:8 
就因为一个变量定义为int型,char型,结果出现偏差
#include "stdio.h"

void main()
{int flag=1;
    int c;
    while(flag)
    {
    scanf("%d",&c);
     switch(c)
     {
         case 1:printf("请输入:\n");break;
         case 2:printf("请输入查找学生学号:\n");break;
         case 3:printf("正在输出:\n");break;
         case 0:{printf("谢谢使用\n");flag=0;break;}
         default:printf("输入错误,请重新输入\n");break;
         
     }
     
    }  
}
下面我把变量c改为char型;
#include "stdio.h"

void main()
{int flag=1;
    char c;
    while(flag)
    {
    scanf("%c",&c);
     switch(c)
     {
         case '1':printf("请输入:\n");break;
         case '2':printf("请输入查找学生学号:\n");break;
         case '3':printf("正在输出:\n");break;
         case '0':{printf("谢谢使用\n");flag=0;break;}
         default:printf("输入错误,请重新输入\n");break;
         
     }
     
    }  
}
为什么c为char型时,输入1~3,default后面语句总能输出????
搜索更多相关主题的帖子: c语言 default char与int 
2008-10-29 17:04
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
看看谭浩强书里的switch用法就知道了

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-29 17:08
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:0 
经本人用VC++ 6.0调试运行,第二个程序在while循环中的
scanf("%c",&c);
这句后面加上一句:
getchar();
之后,一切正常
2008-10-29 17:12
dsr_dbh_1
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-10-29
收藏
得分:0 
原因很简单..
当"c"为字符型时,按"%c"读入时,它把每次的回车符也读入了...当为整型数,不存在这个问题..

[[it] 本帖最后由 dsr_dbh_1 于 2008-10-29 17:41 编辑 [/it]]
2008-10-29 17:18
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
收藏
得分:0 
[bo][un]zxwangyun[/un] 在 2008-10-29 17:12 的发言:[/bo]

经本人用VC++ 6.0调试运行,第二个程序在while循环中的
scanf("%c",&c);
这句后面加上一句:
getchar();
之后,一切正常

回车被getchar()接收了。。。
2008-10-30 12:09
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
写scanf(" %c",..(注意空格),更好一点儿
2008-10-30 12:29
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
收藏
得分:0 
回复 6# 的帖子
这个空格是怎么回事
加个空格确实达到目的了
2008-10-30 19:16
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
空格代表掠过输入中所有的空白字符……
2008-10-30 19:19
快速回复:就因为一个变量定义为int型,char型,结果出现偏差
数据加载中...
 
   



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

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