所以我刚开始用C ++学习编程,而且我正在搞乱基本的控制台程序。我想做一个小垃圾邮件程序。这是代码:
#include <iostream>
#include <string>
using namespace std;
string a;
int b;
void repetition(){
cout << "Please enter the number of time you want the text to be spammed" << endl;
cin >> b;
}
void text(){
cout << "Please enter the text you want to spam." << endl;
cin >> a;
for(;b == 0;){
cout << a << endl;
b - 1;
}
}
int main()
{
cout << "Welcome to your auto-spammer!!" << endl;
repetition();
text();
return 0;
}
我收到一条警告说“声明对第20行的声明无效”。我想知道为什么以及如何解决这个问题。谢谢。
答案 0 :(得分:4)
for
循环在第二个语句为真时执行。因此,除非您输入0
,否则它将永远不会执行。
警告适用于b - 1;
。这将读取b
的值,减去1,并且不对结果执行任何操作。您可能需要b = b - 1;
(也可以写为b -= 1;
或--b;
)。
答案 1 :(得分:2)
我猜这是第20行:
b - 1;
这条线本身什么都不做。 b-1的结果从未分配给任何东西。
尝试--b
,将b减1并将该操作的结果重新分配给b。
答案 2 :(得分:1)
在text()
中,b-1
确实没有做任何事,你可能意味着--b
。第一个返回一个rvalue然后被丢弃,而第二个返回b
一个并导致b
(尽管你应该查找--b
和b--
之间的差异了解该陈述实际上是如何运作的)。也就是说,更多的角色方式是这样的:
for(; b > 0; --b) //Also keep in mind that the second section of a for statement
//is the continue condition, not exit
cout << a << endl;
答案 3 :(得分:0)
您希望将文本打印N次,因此使用的正确循环是:
for (int i=0; i < b; i++)
cout<<a<<endl;
修改b通常不是一个好主意,您可能需要用户稍后输入的值。