精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

關(guān)于C語言中的無符號數(shù)和有符號數(shù)

發(fā)布時間:2011-09-16 共3頁

  看下面的一段程序:

  1 float sum(float a[], unsigned int len)

  2 {

  3     int i;

  4     float r = 0.0;

  5     for (i = 0; i <= len - 1; ++i)

  6     {

  7         r += a[i];

  8     }

  9     return r;

  10 }

  如果len為0,那么這段代碼將不會返回0.0。而是段錯誤。

  另外,當(dāng)在無符號數(shù)和有符號數(shù)之間進(jìn)行類型轉(zhuǎn)換時,不同的轉(zhuǎn)換順序會得到不同的結(jié)果。如:

  1

  2 unsigned x = 0xFFFF;

  3 (int) ((word << 24) >> 24);

  4 ((int) word << 24) >> 24;

  第一個表達(dá)式的結(jié)果是0xFF,而第二個是0xFFFFFFFF.原因是第一個表達(dá)式的右移運算高位補(bǔ)0,而第二個右移運算高位補(bǔ)1.

  測試代碼:

  1 #include <stdlib.h>

  2 #include <stdio.h>

  3 float sum(float a[], unsigned int len)

  4 {

  5     int i;

  6     float r = 0.0;

  7     for(i = 0; i <= len - 1; ++i)

  8     {

  9         r += a[i];

  10     }

  11

百分百考試網(wǎng) 考試寶典

立即免費試用