for(i=0;(c=getchar())!='\n';i+=c);

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:20:47
这句谁能帮我解释一下啊?

for(i=0;(c=getchar())!='\n';i+=c);
1.i=0; //i初始为0
2.(c=getchar())!='\n'; //从标准输入获取一个字符,并赋值给c,如果该字符不为'\n'[<CR>],执行循环(此处循环为空),如果获取到'\n',跳出循环.
3.i+=c; // i = i+c;,继续第2步

这是一个for循环,只是循环条件有点怪而已,执行步骤:一、i赋值为0二、等待用户输入,并把获得的键盘扫描码赋值给变量c,然后检测c是否是回车换行(回车换行也是字符),如果是就结束循环,如果不是就继续三、i+=c这句也就是i=c+i;这个循环的功能也就是把所有的键盘输入的字符的ASCII码值相加存入变量i直到回车换行为止

相当于下面的:
int i = 0;
char c = getchar();
if( c != '\n' )
{
i = i + c;
}
else
{
//循环结束
}