不明白为什么这个 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预览版。
首先,这段代码中有一个问题,如果(ch='$'),其次,我认为实际输出是"hhct1=1,ct2=0",因为当char等于"$"时,可以进入循环。
在if语句中,您实际上将$分配给了ch
:if(ch = '$')
。这应该是:
if(ch == '$')
此外,您的实际输出将是这样的:hhiict1 = 2, ct2 = 0
,因为您在while语句中写了两次cout << ch;
。
在if条件中使用赋值运算符=而不是==。我推荐。
if('$' == ch)
while ((ch = cin.get()) != '$')
{
cout << ch;
ct1++;
if (ch = '$') // << here is the heck
^^^ // did you mean == ?
ct2++;
cout << ch;
}
相关文章:
- 如何在逗号后使用 cout 打印整数值,而无需在逗号后添加额外的零C++?
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- cout 打印内存地址而不是值
- cout 打印不准确的结果,printf 打印准确的结果
- cout 打印的字符 [] 包含的字符数超过设置长度
- cout 打印的值不正确
- 无法使用Ostream打印,但可以使用COUT打印
- C 代码cout打印而不是等待在字符串中使用它
- 为什么 cout 打印"2 + 3 = 15"这段代码?
- 为什么std::cout打印非常小的科学符号值,而不是四舍五入到零
- C 基本的自定义COUT打印至consle
- cout.put() 是否推荐使用 cout<< 打印字符
- 尝试使用 cout 打印矢量中包含的对象列表并排序是错误的
- 使用 cout 打印一个(浮点)小数
- 用std :: cout打印零填充的十六进制
- 为什么我的cout打印两次
- 按相反顺序进行cout打印
- C++ cout 打印两次在循环中做
- lodpng正在向cout打印“1”,如何停止它
- 如何在C++中使用 cout 打印带有 2 位小数的浮动