使用static_cast
將int轉換爲bool是否可以,因爲它會轉換隱式轉換的反轉,但我仍然會收到警告?爲什麼將一個int轉換爲一個bool會給出警告?
例子:
MSVC++ 8
bool bit = static_cast<bool>(100);
使用static_cast
將int轉換爲bool是否可以,因爲它會轉換隱式轉換的反轉,但我仍然會收到警告?爲什麼將一個int轉換爲一個bool會給出警告?
例子:
MSVC++ 8
bool bit = static_cast<bool>(100);
僅僅因爲轉換a => b是隱含的並沒有說明反轉的可行性,b => a。
在你的情況下,你根本不應該施放。只是做了明顯的事情:比較:
bool result = int_value != 0;
這是一個轉換到int
的bool
唯一的邏輯正確的方式,它使代碼更可讀(因爲它使得假設明確)。
順便說一句,反過來也是一樣。隱含地從bool
轉換爲int
只是懶惰。使映射明確:
int result = condition ? 1 : 0;
我不知道爲什麼會發生,當你明確地投它(我認爲這是一個性能警告?),但我通常使用代碼像這樣以避免任何警告:
int i;
bool b = (0!=i);
這永遠不會發出警告。
,你和你的編譯器之間的,但微軟認爲你應該寫:
i != 0
優先於或者:
(bool)i
或
static_cast<bool>(i)
可能的原因寧願它包括:
if (buf != NULL)
或if (buf != 0)
優先於if (buf)
到malloc
,我一樣有人已經發布:
bool result = int_value != 0;
這是國際海事組織更簡單的方法和它的更直觀的比試圖投的整數爲bool。
即使使用`-Wall -Wextra -ansi -pedantic`,g ++也不會抱怨這一點。你使用什麼編譯器?也許發佈精確的代碼? – Thomas 2011-02-11 10:41:28
你的演員嚇壞了我。 – GManNickG 2011-02-11 10:49:17
對我也是,編輯。 – user4344 2011-02-11 10:52:31