你真的了解getchar和putchar吗

        C语言中经常会用到getchar和putchar来获取字符和打印字符,大家应该可以熟练地使用他们,but我想剖析一下这两个函数。

        以下内容仅依据个人对所学知识的理解。作为编程初学者,对其他基础并不是很了解,如果我的看法有错误的地方,欢迎指正。

目录

1.getchar 

2.putchar


我们平时应该是这样使用这两个函数的

char c = 0;
c = getchar();
putchar(c);

很好,就是这样使用的。

1.getchar 

我们来看看标准库里的getchar

(获取字符从标准输入,注意我们从键盘里输入的abc456是字符!!字符!!!) 

此时的你:为什么返回int 类型?

我们来看看对返回值的描述

 我们只看第一行:返回字符(提升为整形)???什么意思??

其实,它这里发生了强制类型转换

我们知道,字符型数据在内存中存的是ASCII码值

它发生de变化是(以字符6举例):

1.from stdin getchar ‘6’(ASCII 码为54)

2.在内存中存的是 0011 0110(char一个字节8bit)

3.返回int, 在内存中变成了 00000000 00000000 00000000 00110110(int 类型 的54)。

 接下来验证上述结论。

int c = 0;         //既然它返回的是4byte的int 我们就用int来接受
c = getchar();     //输入6,c此时里面存的是4byte的54
printf("%d", c);   //我们来打印看看

 

 我们也可以窗口监视

 如果以%c形式打印

 可以确定此时它的变化是 4byte的int 54   ——> 1byte 的char ‘6’(内存里是54)

 所以在我们平时用

char c = getchar();

 的时候它已经发生了由int 截断为 char的过程。

2.putchar

  

奇怪,奇怪,真奇怪,参数是a (int),返回也是a(int),为什么叫putchar输出字符。

 是这样的(而我们平时是char c 我猜测是发生(int)c了):

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值