一個簡單的問題?C語言中int和unsigned int二者誰的數值范圍大? 提示一下,數值0在int中有+0和-0之分,unsigned int中0只有一個+0,所以unsigned int的數值范圍比int大。 有C語言運算代碼如下: #include <stdio.h> int main(int argc, char** argv) { int val = -15; unsigned int value = 13; int sum = value + val; printf("sum %d\n", sum); return 0; } 上面的sum結果是多少? 這個問題的答案自己去想。 C語言運算式子中,若有不同類型的變量,則數值范圍小的變量會被自動轉換為數值范圍大的變量的類型。 所以C語言的轉換規則即為:www.2cto.com 1 char、short等變量會自動升級為int類型變量 2 unsigned char 、unsigned short變量會自動升級為unsigned int類型變量 3 有unsigned 和 signed 類型變量,則數值范圍小的變量的類型會被升級為數值范圍大的變量的類型。 由上面第三規則,上面代碼中val的運算時類型為unsigned int。 其他的很多所謂的規則,自己很容易套用第三規則去推導。