對於所有比int小的整形(char, signed char, unsigned char, short, unsigned short),如過該類型所有可能值都包含在int中,他們會被提升爲int型,否則,他們將被提升爲unsigned int。
對於包含signed和unsigned int型的表達式,表達式中的signed型整數會被轉換爲unsigned型。
int i = -5; unsigned int ii = 1; cout<<(i>ii)<<endl; //輸出1,非常有趣的結果 原因是int型的i轉換爲unsigned int型 short i = -5; unsigned short ii = 1; cout<<(i>ii)<<endl; //輸出0 比較時short和unsigned short都提升爲int型
附加小代碼:
/*不用任何循環語句,不用if,來實現1+2+3+...+10的值*/
#include <iostream>
using namespace std;
int add(int c)
{
int a = 0;
c && (a = add(c - 1));//遞歸循環,直到傳入c的值爲0則結束循環
cout << c + a << endl;
return c + a;
}
int main()
{
/*add(10);
return 0;*/
int ival;
int *pval;
//ival = pval = 0; //error 儘管ival和pval都可以賦值爲0
//ival = 0;
ival = 2;
pval = &ival;
cout << ival << endl;
*pval = 5;
cout << ival << endl;
ival = 7;
cout << ival << endl;
cout << *pval << endl;
cout << pval << endl;
/*cout << sizeof(ival) << endl;
cout << sizeof(pval) << endl;*/
//cout << pval << endl;
//cout << *pval << endl;
//ival = pval;
//ival = 0;
string s1, s2;
//s1 = s2 = "OK"; //ok
//s1 = "OK";
//s1 = s2 = "OK";
int i = -5;
unsigned int ii = 1;
cout << (i>ii) << endl; //輸出1,非常有趣的結果 原因是int型的i轉換爲unsigned int型
short i1 = -5;
unsigned short ii1 = 1;
cout << (i1>ii1) << endl; //輸出0 比較時short和unsigned short都提升爲int型
}