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

關于C語言中的無符號數和有符號數

發布時間: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。而是段錯誤。

  另外,當在無符號數和有符號數之間進行類型轉換時,不同的轉換順序會得到不同的結果。如:

  1

  2 unsigned x = 0xFFFF;

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

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

  第一個表達式的結果是0xFF,而第二個是0xFFFFFFFF.原因是第一個表達式的右移運算高位補0,而第二個右移運算高位補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

百分百考試網 考試寶典

立即免費試用