两段代码需要实现的功能都是输入一个数字,输出这个数字每位之和。
但是第二段代码为什么实现不了呢?
#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);
}
请参阅运算符优先级,!= 的优先级比 = 高,所以第二个将会导致while的判断条件从右往左算,即后面的始终值都为true,执行的始终是:while(c=1){sum += 1-48;}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。