淺談c說話中類型隱性轉換的坑。本站提示廣大學習愛好者:(淺談c說話中類型隱性轉換的坑)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談c說話中類型隱性轉換的坑正文
謹記:在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說話中類型隱性轉換的坑就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。