-1真的比1小嗎?
看到這篇部落格的朋友,此時在想什麼?不妨把現在所想寫出來。
-1比1小,小學生都知道。但是在今天程式設計的時候,我發現了乙個讓我耗費了幾個小時才搞清楚的事情。
事情是這樣的。
class a,有乙個unsigned int getlength()方法,class b同樣有乙個unsigned int getlength()方法。依據a、b建立a、b例項。
char * buff1和char * buff2,buff1-buff2=-1,也就是buff2指向的位址比buff1指向的位址高乙個位元組。
程式中,當(buff1-buff2) < (a.getlength()+b.getlength())時需要執行一些必要的操作。如:
if( (buff1-buff2) < (a.getlength()+b.getlength()) )
在程式執行過程中,列印buff1-buff2的值,為-1,(a.getlength()+b.getlength()) 的值為1,但是,無論如何也進入不了if的條件為true的**段,即上面**的「...」部分。
也許有經驗的人,到此已經知道了問題所在,但是,我卻經過了幾個小時才搞清楚我究竟犯了什麼錯。
其實,問題很簡單,getlength方法返回的值是無符號整型,在比較大小時,編譯器偷偷地為我們做了一件事,她把-1進行了型別提公升為unsigned int型別,因此,-1程式設計了無符號整型中最大的值。從而,我們無論如何都得不到正確的結果。
資料型別的提公升,說起來大家可能都很清楚,但有些時候這種隱蔽的型別轉換,我們還真的要小心。
下面的**,永遠都會對你說:「-1不小於1」
#include
int main(int argc,char * argv)
else
return 0;
}
vue真的比react上手簡單嗎
vue 比 react 容易,因為 vue 提供了很多模板語法或屬性幫你搞定事情,比如 v for v if directive v model watch computed 等。你背下它們的作用就能做事了。但是 react 比 vue 簡單,因為 react 裡面其實只有乙個概念,就是函式。rea...
count 1 比 count 效率高嗎
一直聽同事說mysql的count 1 比 count 要快,其實這兩個的執行效率是一樣的。myisam引擎會把乙個表的總行數記錄下來,所以在執行count 的時候會直接返回數量,執行效率非常快。在mysql 5.5後預設引擎切換為innodb,innodb因為增加了版本控制的原因,同時有多個事務訪...
exists真的就比in的效率高嗎?
系統要求進行sql優化,對效率比較低的sql進行優化,使其執行效率更高,其中要求對sql中的部分in not in修改為exists not exists 修改方法如下 in的sql語句 select id,category id,htmlfile,title,convert varchar 20 ...