c 和c 符號型別比較結果不同踩過的坑

2021-09-27 10:30:44 字數 982 閱讀 5121

第一種情況

c++

int a=0xfb095f38;負數

!(++a)=false

!(++a>0)=true

c#int a=0xfb095f38;

!(++a)=false //不能這麼寫

!(++a>0)=true

第二種情況

int a=0xfb095f38;負數

uint b=0;

c++a< (unsigned int)b=false

c#a< (unsigned int)b=true

第三種情況

uint a=0xfb095f38;負數

int b=-1;

c++a>b=false

c#a>b=true

第四種情況

int a=0xfb095f38;負數

uint b=(uint)-1;

c++a< (unsigned int)b=true

c#a< (unsigned int)b=true

第五種情況

c++

int a=0xfb095f38;負數

int b=0;

c++a第六種情況

int a=0xfb095f38;負數

int b=0xfb095f37;負數

c++a第七種情況

int a=0xfb095f38;負數

uint b=(uint)0xfb095f37;負數;

c++a< (unsigned int)b=false

c#a< (unsigned int)b=true

得出結論c++不管無符號和有符號比較,只要其中乙個無符號,就全當作無符號比較,c#按照實際值比較,如果是無符號即使負數也當作是正數,如果是有符號是負數就是負數是正數就是正數,再比較

c 無符號型別與負數的比較

include using namespace std intmain else return0 如上這段 比較乙個無符號數 10 和乙個負數 1 最後的輸出結果卻是 no10 1是很顯然的事,但是在程式中無符號數和有符號的負數之間進行比較時卻出現了問題。再來看看如下這段 include using...

C 有 無符號數字型別之間的比較

在kmp.cpp中的迴圈,迴圈判斷下標 int型別 與std string size type型別比較發生了迴圈只執行一部分的問題。int i j 0 while i s.size j p.size 在這段 當中,出現了j p.size 但是卻不執行迴圈的情況。原因是當j為 1的時候,j p.siz...

C語言中不同型別的運算和比較問題

今天寫 的時候遇到這樣一種情況 首先我能獲取到乙個配置的電壓資訊,型別是uint8 然後我要用當前的實際電壓與配置的電壓進行比較,問題是 我獲取到的配置電壓單位是0.1v,當前實際電壓單位是0.01v 所以工需要將我獲取到的配置電壓 乘以 10,再和實際電壓進行比較,我是這樣寫的 if curren...