c語言負數翻轉問題

2021-10-12 10:01:59 字數 423 閱讀 1017

1,在專案中,我們經常會用到變數,那麼在變數的定義和傳遞過程中,經常會出現負數的翻轉問題:

int test_funtion()

void poll_fun(unsigned int a)

}void test_negative()

在資料傳遞過程中,int 型別的-1轉為unsigned char 型資料 原始碼:1 000 0001(補碼:1111 1111)所以我們會看到 a = 255,poll_fun一直會處於迴圈中。

總結:1) 在引數要求是無符號型的函式中使用有符號整型數作為引數時,先做引數合法性檢查,避免使用負數;

2) 在用有符號整型數作為陣列下標時,先做引數合法性檢查,避免使用負數;

3) 在用有符號整型數作為迴圈語句上限時,先做引數合法性檢查,避免使用負數。

c語言負數左移右移 C語言負數的移位運算

在c 中左移也就是所說的邏輯移位,右端補,而右移是算數移位,左端補齊的是最高位 的符號位。故負數左移,有可能變成正數,但負數右移,肯定還是負數。用進製的形式對資料進行賦值 這進製的數代表的是補碼。i 0xfffffff7 0xfffffff7 是補碼,而不是原碼,故 i 9 printf d x n...

c語言陣列下標為負數

c語言中陣列的下標可以是負號,在 執行前不會對陣列是否下標越界 溢位等異常進行警告或處理,因此需人為干預。測試 include include int main int argc,char ar int p int offset if argc 2 offset atoi ar 1 else off...

C語言 翻轉佇列內容

迴圈佇列 鏈式佇列的簡單操作 例題佇列有兩種儲存表示,順序表示和鏈式表示。typedef struct sqqueue sqqueue 迴圈佇列可以將佇列想像成乙個環狀,頭 尾指標以及佇列元素之間的關係不變,通過取模,頭 尾指標可以在順序空間內以頭尾銜接的方式 迴圈 移動。當元素不斷入隊時,我們很容...