謹記:在C語言中,當兩種不同類型之間運算時,低字節長度類型會向高自己長度類型轉換,有符號會向無符號類型轉換。
舉例子如下:
#include <stdio.h>void func(void){ int i = 1; unsigned char c1 = 1; signed char c2 = -1; if (c2 > i){ printf("/r/n -1 > 1"); } else{ printf("/r/n -1 <= 1"); } if (c2 > c1){ printf("/r/n -1 > 1"); } else { printf("/r/n -1 <= 1"); } printf ("/n");}int main(){ func(); return 0;}
輸出:
-1 <= 1
-1 <= 1
當C2與i進行比較時,由于C2是有符號8位,i是無符號32位,根據C語言的規則,c2被轉換成32位,即-1的補碼,故會得出-1>1的結論。
而后面一個-1<1的情況是 c2轉化成無符號8位整數,即255,255, 所以大于1。
以上這篇淺談c語言中類型隱性轉換的坑就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選