今天同學在筆試中遇到乙個問題乙個無符號的數加乙個有符號的負數最後的結果是什麼?
例子如下
int a=-19;
unsigned int b=10;
if(a+b>0)
else
問的其實就是有符號的和無符號的相加最終的型別是什麼型別?
c++提供了乙個叫t#include 用於檢視資料的內型標頭檔案
具體使用如下**
#include #include using namespace std;
int main()
{ int a = 10;
unsigned b = -19;
char a1 = 127;
char b1 = 10;
short a2 = 0;
int b2 = 1;
cout << typeid(a + b).name() <
測試結果:
所以總結規律有符號的和無符號的都轉成無符號的 進行計算,對於非int型的資料運算時轉換為int進行計算;計算的結果是中間值在給其他值
C 不同型別變數進行運算時的型別轉換總結
int型乘以double型,結果是double型 int型轉換為double型再運算 double型轉int型,結果是int型 捨去小數點及其後的數字 自動轉換遵循以下規則 若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long...
不同型別資料之間在進行運算時,結果型別應該如何確定
不同型別的資料進行運算,如果乙個運算子兩側的資料型別不同,需要先自動進行型別轉換,使兩者具有同一型別,然後進行運算,現將規律總結如下 系統有預設的轉化規則,就是從精度底的轉化為精度高的,避免計算時精度的丟失 具體轉換規則如下 char short int unsigned long unsigned...
不同型別的資料進行比較
參考5.built in types中的說明,cpython按照如下規則進行比較 自己的總結 任何兩個物件都可以比較 相同型別的物件 例項 如果是數字型 int float long complex 則按照簡單的大小來比較 如果是非數字型,且類 型 中定義了 cmp 含 gt lt 等 則按照 cm...