在C语言中getchar()如何用

新手charch=getchar();看视频看到这个,瞬间就不理解了。定义一个字符后,这个字符为什么能等于一个函数啊??还有没有这样的例子?(简单点,新手)还有,据我所知... 新手
char ch=getchar();
看视频看到这个,瞬间就不理解了。
定义一个字符后,这个字符为什么能等于一个函数啊??还有没有这样的例子?(简单点,新手)
还有,据我所知,getchar的返回值类型是int型,那么这个整数代表什么,而且,明明定义的是char,最后却等于int,这不是很奇怪吗?
展开
 我来答
匿名用户
2015-08-04
展开全部
并不是等于函数,而是等于函数调用的结果

就像数学上说的 令 y = sin(π) 不是说让变量 y 成为一个函数,而是让 y 等于 sin(π) 这个计算的结果。不过 C 语言这样的“过程式”编程语言和数学上有一点不一样,就是对同一个函数的两次一模一样的调用可以得到不同的结果,例如 getchar(); getchar(); 这样两次调用的结果可能是不一样的

getchar() 的返回值类型确实是 int ,返回值的取值有两种可能,一种是 把读到的字符提升成 int 类型 然后返回(因为 int 的取值范围一定是 char 的取值范围的超集,所以不会有数据丢失),另一种是如果读取的时候发生错误,返回的是 EOF,这个宏展开成一个“和任何字符都不相等”的 int 值,用来表示错误,它不一定能用 char 表示。

也就是说,这里人为给 int 加上了“比 char 多一个表示‘不是字符’的值的数据类型”的含义

代码中这种直接把 getchar() 的返回值赋给 char 类型就是放弃检查 读取时有没有发生错误,算是偷懒的做法或者是比较坏的做法吧
追问
我还是不理解为什么字符最后等于一个整型  确实每一个字符都有对应的ASCII码,但是字符就是字符,整数就是整数啊。。。char ch=97,ch就是a难道也成立吗?这不就是char和int混在一起了吗

你说是比较懒的做法,那么实际应该怎样
追答

你的程序处理的“字符”都是处理字符的编码,你不可能做在字符 'a' 上面加个撇号这种直接改变字符形态的事。换句话说你只是处理“代表字符的编码”而不是“字符”本身。char 存储的就是字符的“编码”,而非字符本身


想想看字符的形态就像一幅图片,有几十几百个像素点组成,每个像素点对应一个二进制位,就需要几十几百个二进制位。相比之下,一个字符的 ASCII 编码(如果在 ASCII 的表示范围之内的话)只需要七个二进制位,显然存编码更省空间


当然像 C 语言这种直接把 char 归类成整数类型甚至能直接对 char 进行乘除运算的语言也是比较特别,这种(应该能说成是历史遗留问题)就只有接受了


实际处理的时候就要检查 getchar 的返回值是否等于 EOF (也就是 getchar 调用是否失败)

char ch;
{
int temp = getchar();
if (temp == EOF) {
    printf("Error within input");
    exit(EXIT_FAILURE);
} else {
    ch = temp;
}
}
木有想到GK5ym
推荐于2016-08-21 · TA获得超过208个赞
知道小有建树答主
回答量:207
采纳率:90%
帮助的人:125万
展开全部

首先类型 char < short < long ,int由系统决定是short还是long,他们之间是可以相互转换的。

char型指是ascii码表对应的字符,如,'A'的ascii码是65,

你可以

char A = 'A';
char A = 65;
int A = 'A';

不管是int还是char,在内存中都是二进制。只要他们二进制相同,就是相等的。

int和char是可以混用的,学会用printf %c %d来测试他们吧,这样你就能加深印象


------------------------

”定义一个字符后,这个字符为什么能等于一个函数啊?“

这个一点也不奇怪

这个不是等于一个函数,而是等于其返回值。


例如:

int a = 10;

int b = fun(); //假设fun()返回一个10的函数

都是可以


getchar是函数,

getchar()是函数调用。


就像高中学的y=f(x),y是等于f(x)计算出来的值

x是形参,你具体传入一个值,如0,就可以算出来具体的值


另外等于函数,其实说的是函数指针,暂时你用不上,就先不介绍了

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
826010478
2015-08-04 · TA获得超过521个赞
知道小有建树答主
回答量:920
采纳率:53%
帮助的人:287万
展开全部
函数是有返回值的,你自己写个带返回值的函数也可以。
getchar返回的值可以说是ASCII码,字符都是有一个ASCII值的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式