char array[10]="ABCDEFG";
int len=sizeof(array);
int num=-1;
if(len<num)
cout<<"Ture";
一般認爲sizeof取長會是一個正整數,但是和一個負數比較,運行結果是“Ture”。why?
因爲sizeof的返回值是size_t型,同於unsigned int。
當與一個signed int 做比較的同時,signed int會做隱式的類型轉換,
也就是說上面的num在比較的同時變成了一個比較大的unsigned int,所以纔會爲真。
爲什麼會變成一個較大的數? 是因爲把二進制表示的符號位當作最高位了。