C++學習注意點

對於所有比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型
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章