2014-12-02 107 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一般是不是一個好主意,你可能需要用戶輸入後的價值。