BEIBEIPRINCESS 2022-10-28 10:40 采纳率: 75%
浏览 41
已结题

getchar输入2473只读2 那么为什么输入2473得到668977 输入2得到66 且最后printf的时候c=10?(语言-c语言)


#include<stdio.h>
#include<stdlib.h>
int main()
{
    int c=0;
    while((c=getchar())!='\n')
    switch(c-'2')
    {
        case 0:
        case 1:putchar(c+4);
        case 2:putchar(c+4);break;
        case 3:putchar(c+3);
        default:putchar(c+2);break;
    
        
    }
    printf("\n");
    system("pause");
    return 0;
}

getchar输入2473只读2
那么为什么输入2473得到668977
输入2得到66
且最后printf的时候c=10,那为啥这个时候printf("\n")就是668977
\n不是换行么
第二次执行到switch(c-'2')的时候c=52 不是54 也不是50 是为什么捏

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-28 10:47
    关注

    getchar读入一个字符,输入2473,第一个2就是数字字符'2'
    输入'2'时,switch(0),执行两次putchar(c+4),因为c是‘2’,所以加4就是'6',因此输出66
    输入'4'时,switch(2),执行一次putchar(c+4),输出8
    输入'7'时,switch(5),执行default,输出9
    输入'3'时,switch(1),执行两次putchar(c+4),输出77
    ===========
    且最后printf的时候c=10 ,因为'\n'就是10,所以switch是不执行的,直接printf输出换行符结束了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测