無符號數與有符號數的操作

2021-08-26 04:04:28 字數 1325 閱讀 3334

void sum(void)

.當混合不同型別的變數進行計算時,便可能會發生型別轉換

相同型別的資料在轉換時有規則可循:

字元必須先轉換為整數(c語言規定字元型別資料和整型資料之間可以通用)

short型轉換為int型(同屬於整型)

float型資料在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬於實型)

賦值時,一律是右部值轉換為左部型別

[注]

當整型資料和雙精度資料進行運算時,c先將整型資料轉換成雙精度型資料,再進行運算,結果為雙精度型別資料

當字元型資料和實型資料進行運算時,c先將字元型資料轉換成實型資料,然後進行計算,結果為實型資料

所以要特別的注意型別的預設轉換規則:

下面舉行說明型別轉換的規則。例如執行:

x=100+'a'+1.5 * u+f/'b'-s * 3.1415926

其中,u

為unsigned

型,f為float

型,s為short

型,x為float

型。式中右面表示式按如下步驟處理:

(1)首先將'a'

、'b'

和s換成int

,將1.5

和f轉換為double

型。(2

)計算100+'a'

,因'a'

已轉換為int

型,於是此運算結果為197。(3

)計算1.5*u

,由於1.5

已轉換為double

,u是unsigned

型,於是首先u

轉換為double

,然後進行運算,運算結果為double。(4

)計算197+1.5 * u

,先將197

轉換為double

(如197.00

…00),其結果為double。(5

)計算f/ 'b'

,f已轉換為double

,'b'

已轉換為int

,於是先將'b'

再轉換為double

,其結果為double。(6

)計算(197+1.5 * u

)+f / 'b'

,者均為double

,於是結果也為double。(7

)計算s * 3.1415926

,先將s

由int

轉換為double

,然後進行運算,其結果為double。(8

)最後與前面得的結果相減,結果為double。(9

)最後將表示式的結果轉換為float

並賦給x

無符號數與有符號數的操作

void sum void 當混合不同型別的變數進行計算時,便可能會發生型別轉換 相同型別的資料在轉換時有規則可循 字元必須先轉換為整數 c語言規定字元型別資料和整型資料之間可以通用 short型轉換為int型 同屬於整型 float型資料在運算時一律轉換為雙精度 double 型,以提高運算精度 ...

有符號數與無符號數

關於有符號數和無符號數的一些重要知識點,包括它們在記憶體中的儲存方式 互相轉換 越界計算等。大家肯定都知道,對於有符號數,資料型別的最高位用於標示資料的符號,最高位為1表示負數,最高位為0表示正數,那麼今天我們主要就此討論乙個問題 在計算機內部具體是如何表示有符號數呢?在計算機內部是通過補碼的方式來...

無符號數與有符號數比較

2012 04 24 19 30 2555人閱讀收藏 舉報擴充套件 先出幾個題目,再解釋一下為什麼答案是那樣的。題目一 int a 1 unsigned int b 1 printf d a b 結果輸出 1 因為無符號數與有符號數比較時,要將有符號數轉化為無符號數,再來比較。a轉化為無符號數後就是...