我學習C++,但我有一些問題時,我想我的代碼運行...警告C4018:「> =」:簽訂VSC /無符號不匹配++ 2010
int __cdecl Voter___Vote(Voter *_this, CPlayer *pOne, char *pdata){
CPlayer *pPlayer=(CPlayer *)pOne;
CPvpOrderView * Pvp=GetPvpOrderViewV(pPlayer);
char tmp1[255];
char tmp2[255];
char tmp3[255];
char tmp4[255];
itoa(pPlayer->m_Param.m_dbChar.m_byLevel,tmp1,10);
sprintf(tmp2, "%Lf", Pvp->m_dPvpPoint>=PvpPoint);
sprintf(tmp3, "%Lf", Pvp->m_dPvpPoint>=PvpCash);
itoa(pOne->m_pUserDB->m_AvatorData.dbAvator.m_dwTotalPlayMin>=TotalPlayMin,tmp4,10);
MessageBoxA(NULL,tmp2 ,tmp3,MB_OK);
if(pPlayer->m_Param.m_dbChar.m_byLevel>=Lvl&&Pvp->m_dPvpPoint>=PvpPoint&&Pvp->m_dPvpCash>=PvpCash&&
pOne->m_pUserDB->m_AvatorData.dbAvator.m_dwTotalPlayMin>=TotalPlayMin)
{return p_Vote(_this,pOne,pdata);}
return 10;
}
和我有一些像這樣的錯誤
Vote.cpp
Vote.cpp(42): warning C4018: '>=' : signed/unsigned mismatch
Vote.cpp(45): warning C4018: '>=' : signed/unsigned mismatch
這些都是警告(不是錯誤) - 他們會告訴你,你是比較有符號和無符號值。這通常不是一個嚴重的問題,但無論如何,通過糾正基礎類型,或者通過使用合適的強制轉換來解決所有其他問題時,您應該修復它。 – 2015-03-13 15:13:46
@PaulR這是很好的建議,但我個人認爲它確實是一個潛在的非常嚴重的問題。未定義的行爲只是一個需求。 – Bathsheba 2015-03-13 15:15:15
@Bathsheba:不幸的是,這種有符號/無符號不匹配的情況非常普遍,除非將警告等級提高到「11」,否則大多數編譯器甚至不會生成警告。但我同意,有些情況下這種比較可能是致命的。 – 2015-03-13 15:18:35