繁体   English   中英

不明白为什么这个std :: cout正在打印这个

[英]Don't understand why this std::cout is printing this

我得到的是下面的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预览版。

首先,在这段代码中有一个问题,if(ch ='$'),第二,我认为实际输出是“hhct1 = 1,ct2 = 0”,因为当char等于'$'时,可以得到进入循环。

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

if(ch == '$')

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

如果条件,您正在使用赋值运算符=而不是==。 我会推荐。

if('$' == ch)
while ((ch = cin.get()) != '$')
{
    cout << ch;
    ct1++;
    if (ch = '$') // << here is the heck
          ^^^     // did you mean == ?
        ct2++;
    cout << ch;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM