题目:
3.请认真考虑if而的程序:
#include <iostream>
using namespace std;
int main()
{
char ch;
int ct1,ct2;
ct1 = ct2 = 0;
while((ch == cin.get()) != '$')
{
cout << ch;
ct1++;
if(ch = '$')
ct2++;
cout<<ch;
}
cout << "ct1 = " << ct1 << ", ct2 = " << ct2 << "\n";
return 0;
}
假设输入如下(请在每行末尾按回车键):
Hi!则输出将是什么(还记得吗,输入被缓冲)?
Send $10 or $20 now!
答案:
由于程序使用 ch='$',而不是 ch =='$',因此输入和输出如下:
Hi!在第二次打印前,每个字符都被转换为$字符。另外,表达式 ch=$的值为$字符的编码,因此它是非0值,因而为true;所以每次ct2将被加1。
H$i$!$
$Send $10 or $20 now!
S$e$n$d$ $ct1 = 9, ct2 = 9
C++技术网辅导详解解答:
答案解释的很清楚了,就不赘述了。