强制转换:
//C风格强制转换
//(typeName)value
chara = '1';
(int)a;
//C++风格强制转换
//tpeyName(value)
chara = '1';
int(a);
//c++新标准;
//static_cast<TypeName>(value)
chara = '1';
static<int>(a);
sizeof(int)这个并不一定就是2,不同的操作系统,对Int分配字节数不一样;之前Int一般 占用2个字节,long int 占用4个字节;
但是目前随着64位OS的普及,int占用4个字节。
字符串:
char a[5]={'1','2','3','4','5'};//这个只能看做是字符数组;
char a[6]={'1','2','3','4',,'5','\0'};//最后一个添加了结束符,所以是字符串;
chara='s';//a仅仅只有一个字节
char*a="s";//a是指针,但其指向的可以说是一个字符串数组,有两个字符,一个字符s,一个结束符;
cin输入流以空格,回车,制表作为字符串输入结束的标志;
“adcd and c”
cin<<a; a 中只有adcd;
cin.get()返回一个cin对象;
cin.get().get();理论上可以无限制;
c++中两个下划线或者下划线和大写字母开头的名称被用作保留资源使用。所以,代码中最好不要使用这些,避免冲突;
oct ,hex也最好不要用作变量名。Std中已经有std::hex,如果已使用using namespace std:
那么后面的代码段中hex就不能用作变量名了,会造成看不见的错误;oct亦然;
溢出问题:
unsigned char i = 0;
for(;i<500;i++)
{
printf("%d",i);
}
定义的i是unsigned char其取值范围是0-255,如果到了255,再一次加1,那么回到了原点0,所以上述程序是个死循环,无法结束;
如果是int I;(int 占用2字节情况)
那么其取值范围是:-32767-32767。
int i = 0;
for(;i<32769;i++)
{
printf("%d",i);
}
如果i值自增到了32767,在一次加1,那么就到了重置点,其值不是32768,而是-32767,可以理解为又重新开始数了。
Unsigned int I = 0;
无符号的类型其取值范围是0-65535,65535是重置点;