我不確定我對C++的理解是否是錯誤的。我讀過1)所有非零值相當於TRUE,零相當於FALSE; 2)空指針被存儲爲零。C++零(空)指針應該返回false嗎?
然而,這樣的代碼:
void ViewCell::swapTiles (ViewCell *vc) {
ViewTile *tmp = vc->tile();
[stuff ...]
if (tmp) addTile(tmp);
}
給我提領,從一個空指針段錯誤,但
if (tmp != 0) addTile(tmp);
工作正常。任何想法爲什麼?
只需在旁邊註釋,空指針不需要在硬件中表示爲零,但編譯器將這種複雜因素考慮在內。 – 2009-08-08 07:36:11