0

我得到的是下面的 c++ 代码。

#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";
system("pause");
return 0;
}

现在你可以知道如果输入会发生什么。

  hi$<ENTER>

并且输出应该是正确的。

hi ct1 = 2, ct2 = 0

但真正的输出是这样的。

h$i$ct1 = 2, ct2 = 2.

为什么它输出我不明白,我应该如何解决它。

我正在使用适用于 Windows 桌面的 Visual Studio Express 2013 预览版。

4

4 回答 4

2

首先,这段代码有问题,if(ch = '$'),其次,我认为真正的输出是“hhct1 = 1,ct2 = 0”,因为当char等于'$'时,可以得到进入循环。

于 2013-07-12T11:42:46.177 回答
0

在您的if语句中,您实际上将 $ 分配给ch: if(ch = '$')。这应该是:

if(ch == '$')

此外,您的实际输出将是这样的 : hhiict1 = 2, ct2 = 0,因为您cout << ch;在 while 语句中写了两次。

于 2013-07-12T11:21:25.230 回答
0

您在 if 条件中使用赋值运算符 = 而不是 == 。我会推荐。

if('$' == ch)
于 2013-07-12T11:22:10.343 回答
0
while ((ch = cin.get()) != '$')
{
    cout << ch;
    ct1++;
    if (ch = '$') // << here is the heck
          ^^^     // did you mean == ?
        ct2++;
    cout << ch;
}
于 2013-07-12T11:22:48.950 回答