結果如下:
wll@wll-linux:~/code/test$ ./cal
a > b
unsigned short a = 0;
unsigned int b = 0x12345678;
a = b;
printf("b:0x%x, a:0x%x\r\n", b, a);
結果如下:
wll@wll-linux:~/code/test$ ./cal
b:0x12345678, a:0x5678
unsigned char test(unsigned short x)
unsigned short a = 0;
unsigned int b = 0x12345678;
printf("a:0x%x\r\n", a=test(b));
結果如下:
wll@wll-linux:~/code/test$ ./cal
x: 0x5678
a: 0x78
由於不熟悉不同型別間運算規則,導致的**bug,大部分人應該都遇到過,舉例如下:
unsigned int a = 1;
unsigned int b = 100;
for ( b; b-a >= 0; b--)
以上**並不會按照預期執行,而是出現了死迴圈:
無符號數想減,結果永遠是無符號數,而無符號數,是不會<0的,所以for迴圈不會通知。
保持語義不變的情況下可以改為如下:
for ( b; b >= a; b--)
另外,函式引數傳遞過程中的型別不一致導致的問題,也是層出不窮,待筆者日後遇到再進行補充
不同資料型別轉換
nsstring 相關 nsdictionary 轉nsstring 用字串將nsarray的元素拼接起來 nsarray array nsarray arraywithobjects hello world nil nsstring string array componentsjoinedbys...
混合運算的型別轉換
1616 3 張宇 16 10 17 連續十六天總結 a.混合運算的型別轉換 100 b.這節學的內容和以前學的有很多是重複的,比如雙精度的和單精度的數相運算的結果是雙精度。我們也可以將結果強行進行型別轉換,資料型別 表示式 或 資料型別 表示式 運算時會進行隱性運算,有符號向無符號的轉化。精度低的...
資料型別及轉換
原始值 number string boolean null undefined 引用值 object array object function date regexp 正規表示式 原始值和引用值區別 原始型別變數,存放的是具體的值,即修改變數a的值,不會影響變數b的值。var a 5 var b...