当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 6.10 复习题 第3题 错误的if条件==不是=

C++ Primer Plus 6th 6.10 复习题 第3题 错误的if条件==不是=

更新时间:2019-05-05 09:57:35浏览次数:1+次

题目:
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!
H$i$!$
$Send $10 or $20 now!
S$e$n$d$ $ct1 = 9, ct2 = 9
在第二次打印前,每个字符都被转换为$字符。另外,表达式 ch=$的值为$字符的编码,因此它是非0值,因而为true;所以每次ct2将被加1。

C++技术网辅导详解解答:
    答案解释的很清楚了,就不赘述了。