c++提纲挈领之冰山一角,持续更新!

1.unsigned char与char的使用
只要注意当把这个字符赋值给int或longlongint时即可,当有这种赋值需求时就要用unsigned char了因为不会把最高位当作符号为处理,否则用char会出错!
2.输出十六进制时的技巧
cout<<"\x"<<hex<<uppercase<<setw(2)<<(int)c;如这句话所示,uppercase只会用在这种场合,用于16进制输出时的字母会大写。
3.cin不能读入空行,用getline可以读入空行
4.输入字符串时用getline不用ios::sync_with_stdio(false); cin.tie(0);用cin可以用。
5.其实用getline时可以用ios::sync_with_stdio(false);他是这样一种情况:因为我们用getline时通常前面会输入一个整数这时我们通常会用getchar()吃掉\n如果此时用ios::sync_with_stdio(false);会在输入字符串时导致第一个输入的字符串丢失;而如果不用getchar的话,getline读入的第一个字符串是\n如果说你不在乎这个影响那么就可以用ios::sync_with_stdio(false)。故应该是有getchar不用ios::sync_with_stdio(false),没有可以用ios::sync_with_stdio(false)但是第一个读入的字符串是\n.
6.C++ STL set::find是如何判断两个元素相等的?重载<操作符后,通过一下规则来判断: if(!(A<B || B<A)),当A<B和B<A都为假时,它们相等。故像使用find时候不需要重载==之类的,仅重载<即可。
7.我们需要明白这些基本数据类型:char,unsigned char,int,unsigned int,long long int,unsigned long long int等等都只是为了限制输入的变量在内存中所占的地址是多少位,并不要片面的将这些符号同整型,字符型等固化起来。
像是int我当然可以按%c输出,char当然也可以%d输出…这些都不是重点。只要自己知道,奥,原来我用的数据没超过255(十进制下),那为了节省空间我就用个unsigned char就行了呗,或者没超过127,那用个char也无所谓,当然了如果超过127了你还要用char那就会出错,这个出错不是说存不了了,是指存的数不是你想存的哪个数了例如你存128,其实存的是-128。具体数据类型怎么转换的如下:
(1)从4字节的int类型转换成1个字节的char类型,则取int数据的最低的一个字节,将这个字节的数据赋给char型数据,且是有符号的,即首位为符号位;而如果是从int转换成unsigned char类型,则整个一个字节都是数据,没有符号位。
(2)从char转换为int:则在前面的三个字节补符号位,即补上0xffffff(char的首位为1),或0x000000(char的首位为0)。从unsigned char转换为int,则前面补上0x000000.

猜你喜欢

转载自blog.csdn.net/weixin_44142774/article/details/114692713