鱼C论坛

 找回密码
 立即注册
查看: 3559|回复: 1

小甲鱼C++视频教程第三课的一个小程序问题

[复制链接]
发表于 2013-3-4 22:11:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
程序如下:
#include <stdio.h>
int main (void)
{
  int i;
  int sum = 0;
  char ch;
  
  printf("请输入一串整数和任意数目的空格\n");
  while (scanf("%d",&i) == 1 )//成功读取返回1
  {
   printf("%d\n",i);
   sum += i;
    while(( ch=getchar()) == ' ');//getchar()返回ASCII 码
    if( ch == '\n' )//如果回车才break
    {
      break;
    }
    ungetc( ch,stdin );
  }
  printf("结构是: %d",sum);
  printf("\n");
  return 0 ;
}

问题是:
调用了ch = getchar()得到一个值,这个ch得到值是ASCII字符值 ,那么当我们用ungetc(ch,stdin)将读到的后一个字符回退到输入流中,这时退回的也是ASCII字符值,然后scanf将其读到i中,在这里ASCII字符会自动转换成%d 数字的形式?不会变成输出的ASCII的数字


小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-4 22:22:35 | 显示全部楼层
既然返回是个ASCII字符到输入流中,那么scanf在将返回输入流的数据给i,这里的i应该是ASCII的数值才对,怎么反而可以正确的是十进制的数值继续sum+=i
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-7 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表