开发者社区> 问答> 正文

关于C语言getchar()

两段代码需要实现的功能都是输入一个数字,输出这个数字每位之和。
但是第二段代码为什么实现不了呢?

#include<stdio.h>
int main(){
    char c;
    int sum=0;
    while(1)
    {   c=getchar();
        if(c=='\n') break;
        sum=sum+(c-'0');
    };

    printf("%d",sum);
}
#include<stdio.h>
int main(){
    char c;
    int sum=0;

    while(c=getchar()!='\n')
    {   
        sum=sum+(c-'0');
        printf("%d\n",c);
    };
    printf("%d",sum);
    }

展开
收起
a123456678 2016-06-07 19:58:52 3077 0
5 条回答
写回答
取消 提交回答
  • 专注物联网

    第二个输入后循环直接退出了,没有进循环里呀

    2019-07-17 19:30:55
    赞同 展开评论 打赏
  • C入门级选手的嵌入式开发人员

    Image
    请参阅运算符优先级,!= 的优先级比 = 高,所以第二个将会导致while的判断条件从右往左算,即后面的始终值都为true,执行的始终是:while(c=1){sum += 1-48;}

    2019-07-17 19:30:55
    赞同 展开评论 打赏
  • 乐于学习与分析

    第二个输入后循环直接退出了,没有进循环里呀

    2019-07-17 19:30:55
    赞同 展开评论 打赏
  • 软件开发,安全加密

    第二个输入后循环直接退出了,没有进循环里呀

    2019-07-17 19:30:55
    赞同 展开评论 打赏
  • while((c=getchar())!='\n')
    2019-07-17 19:30:55
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载