請問 C++中為何 NULL與負數比較後 NULL比較大?

請問 C++中為何 NULL與負數比較後 NULL比較大? 我寫了一段簡單的程式碼判斷如下 int aa[4]={NULL,-3,-236,-50}; int max=-99999; for (int ii=0;ii<4;ii++) { cout<<aa[ii]<<","; if... show more 請問 C++中為何 NULL與負數比較後 NULL比較大?
我寫了一段簡單的程式碼判斷如下

int aa[4]={NULL,-3,-236,-50};
int max=-99999;
for (int ii=0;ii<4;ii++)
{
cout<<aa[ii]<<",";
if (max<aa[ii]){max=aa[ii];}
}
cout<<endl<<max<<endl;

但結果為0

理論上,NULL應該是沒有東西
也就是說aa[0]裡面應該沒有任何東西
所以應該不能夠做比較
為何其經過比較後是上面4個數最大的
且顯示為0?
Update: to ..Jacob Lee
那再請問
當我的程式要判斷某陣列是否所有的元素皆為NULL的話(亦即該陣列為空集合)
放0在元素中會容易被混淆這是必然的吧?
因我在研究如何寫車輛途程問題(VRP)的演算法
其中需要將某些陣列元素設為NULL以判斷該節點是否已經被選過
若以我的想法 原問題中陣列 aa印出來應為{ ,-3,-236,-50}
aa[0]是沒有任何東西的
可是實際執行後印出來卻是{0,-3,-236,-50}

不過話說回來 這是C/C++本身的設定 它要丟0進去我們也莫可奈何吧
Update 2: to Jacob Lee

是的
我所要使用的陣列當中確實有負數存在(但不是路徑距離而是節約值)
而您建議的INT_MIN確實是可以解決我的問題
萬分感謝~~!!
5 answers 5