2017-05-06 62 views
-1

我是新的C++,所以這可能是平常的東西。C++ bool雖然在向量

我有一個std::vector<int> v;

而且我想看看是否該向量爲0。我覺得這是工作:

bool l = true; 
    i = 0; 
    while((l = true) && (i<v.size())) 
    { 
     if (v[i] == 0) l = false; 
     ++i; 
    } 

但即使我的矢量是1,2,3,0,2,0這l仍然true。爲什麼?我該如何解決這個問題?

回答

2
while((l = true) && (i<v.size())) 

實際上是一項任務。你應該寫更多的安全比較代碼

while((true == l) && (i<v.size()) 

請注意,在這種情況下,如果你不小心輸入=而不是==會有編譯錯誤,而不是斷碼。

+0

你不應該這樣做。只要寫'while(l && ...)'而不是明確地比較'true'。 – interjay

+0

實際上'l'根本就沒有必要,寫'if(0 == v [i]){break;}'會做這件事。但我想指出與常數的安全比較。 – VTT

+0

@VTT:Ew,尤達。這不再是5月4日了! –