c++ - 不明白为什么这个 std::cout 打印这个

标签 c++ while-loop cout cin

我得到的是下面的 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等于'$'时,可以进入循环。

关于c++ - 不明白为什么这个 std::cout 打印这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613737/

相关文章:

c++ - 在 C++ 中将 int[] 转换为 String

c++ - 调用 sizeof (*s.begin()) 安全吗?

sql - ORA-06502 : PL/SQL: numeric or value error: character string buffer too small

java - Do-while 循环 "string index out of range"

c++控制台输出显示在屏幕上

c++ - 内联虚函数真的是无稽之谈吗?

c++ - 将lambda函数存储到std::function中有什么好处?

c# - 为什么我的 While 循环不循环?

c++ - cout 打印不正确的值

c++ - cout 是否保证有 ctype<char> 刻面?