一個簡單的問題?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。
其他的很多所謂的規則,自己很容易套用第三規則去推導。