请教一个特业余而我却弄不明白的C++问题
string word;while(cin>>word) 这个语句什么时候为真啊!不管我输入什么字符都不能停止循环!
{ ...
}
拜托高手指教一下啦!拜托!
这个问题有人问过,好象也只是回答了CTRL_Z输出2次,就可以结束
相信不少人都见过这样的句子:cin>>i>>j;
表示可以输入2个值,分别付给i和j;也就是说,它等价于:cin>>i;cin>>j;
实际上,cin>>i也有返回值,它返回的是一个cin。这样就可以把cin>>i>>j;看成(cin>>i)>>j;也就是cin>>j;了,所以可以连续正常输入2个值而只需要1个cin 。同样的还有cout 。
由于返回值cin,这是一个非0值,所以循环可以持续运行。
同样,即使改为2楼的 while (cin>>word != ‘#') {} ,循环依然不会在输入#的时候停下来,因为cin!=‘#’为真!
只有使用while ((cin>>word) != (cin>>word2)) {},这个时候,程序才不会执行{}里面的句子。
因为不论输入的word 和 word2 的值是否相等,它们返回的值都是cin,是相等的,所以while()里面的语句为假,{}里面的语句不执行。