那个 (c=getchar())!='2'是什么意思?如果我输入1992,输出是1993;如果我输入其他的数字,它就不会加1

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:01:52
#include<iostream>
using namespace std;
void main()
{
int n=0;
char c;
while ( (c=getchar())!='2' )
n++,
cout<<c;
cout<<n;
}

#include<iostream>
using namespace std;
void main()
{
int n=0;
char c;
while ( (c=getchar())!='2' ) //这个就表示如果读入的字符不等于2,就加1
n++, cout << c;//你被假象所迷惑了
cout<<n;
}
getchar()表示读入1个字符,c=getchar())!='2' 表示将读入的字符赋值给c,再和'2'判断是否不等。
程序开始运行,n = 0; c为未定义值。首先通过getchar()读入1,由于'1' != '2',n++;,n为1,输出'1',接着读入'9','9',同样的方式,都不等于'2',输出'9'和'9',n以同样的方式自增两遍。最后读入'2',不满足“不等于'2'的条件,跳出循环,输出n的值3,总输出就是1993,这并不是加1,你读入20032它会输出的是20034!

(c=getchar())!='2'是检测你输入的字符中有没有‘2’,n是用来统计你输入的内容中字符‘2’前面的字符数量。

你输入1992,在字符‘2’前面就有3个字符“199”,所以输出字符“199”,还有输出n的值3,所以输出就是1993

n后面的是逗号,所以cout<<c也是在 while中的,即:
while ( (c=getchar())!='2' )
{ n++,cout<<c;}
程序意思是输入直到遇到2时程序终止,终出总的输入字符数n,while中的cout<<c是将当前字符输出
我输入
1111(回车) (我的输入)
1111 (程序输出)
22(回车)