2014-12-02 139 views
-2

所以我刚开始学习使用C++编程,目前我正忙于基本的控制台程序。我想做一个小垃圾邮件程序。下面的代码:C++ for循环“语句无效”警告?

#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行我想知道为什么,我怎么能解决这个说法。谢谢。

+3

'b - 1;'没有影响:也许'b - = 1;' – 2014-12-02 20:28:02

回答

1

text()b-1确实什么都不做,你的意思可能是--b。第一个返回一个右值然后丢弃,而第二个值减1,结果为b(尽管您应该查看--bb--之间的差异,以了解该语句实际如何工作)。这就是说,更colliquial的方式来做到这一点是这样的:

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; 
4

for循环执行,而第二个语句为true。所以除非你输入0,它永远不会执行。

该警告用于b - 1;。这读取b的值,减1,并对结果不起作用。你的意思可能是b = b - 1;(也可以写成b -= 1;--b;)。

2

我猜这是第20行:

b - 1; 

这条线本身什么都不做。 b-1的结果从来没有分配给任何东西。

尝试--b,它会将b递减1并将该操作的结果重新分配给b。

+1

除非你在表达依靠价值,倾向于使用predecrement来缩减后缀,即“--b”而不是“b - '。对于整数它应该没有关系,但对于更复杂的对象,这个预处理避免了构造一个临时对象。 – 2014-12-02 20:31:36

+0

这是一个很好的观点。编辑。 – ElGavilan 2014-12-02 20:33:27

0

你想要做的打印次数的文本N多,所以正确的循环使用是:

for (int i=0; i < b; i++) 
    cout<<a<<endl; 

修改b一般是不是一个好主意,你可能需要用户输入后的价值。