C Plus学习笔记
# 阅读笔记 - 才发现CC为标准UNIX C++编译器,而cc为标准UNIX C编译器。g++为GNU C++编译器,而GNU C++编译器的MS-DOS版本名为gpp。comeau编译器最为严格、标准。都是先生成.o文件,再生成.out文件。 - 在C中,main函数括号为空表示对是否接受参数保持沉默,而在C++中为空与跟void一样。C++中main函数默认返回0。 - cout是可扩展的,允许自行开发新的数据类型。 - short至少16位;int至少和short一样长;long至少32位,且至少与int一样长。 - sizeof对类型名使用时,必须加上括号。 - C++使用前一(两)位来标识数字常量的基数。如果第一位是1~9,则基数为10;如果第一位为0,第二位为1~7,则基数为8;如果前两位为0x或0X,则基数为16。 - 数据后缀标识存储的类型,如2344L,默认情况下为int型,除非太大,int装不下。 - char在默认情况下既不是有符号,也不是没符号。在符号很重要的情况下,一定要特别声明。 - E表示法适合于非常大和非常小的浮点数。如:+3.45E+6指的是3.45与1000000相乘的结果,E后为负数代表除以10的乘方。 - cout.setf(ios_base::fixed, ios_base::floatfield);,这样可以显示浮点数多余的零。 - 赋值计算在类型转换时,较大的数转换为较小的数时,原来的值可能超过目标类型的取值范围,这种情况结果将是不可确定的。将浮点型转换为整形时,C++采取截取(丢弃小数部分),而不是四舍五入。 - true被转换为1,false被转换为0,这些转换称为整形提升(int类型计算速度更快)。 - 传统C语言总是将float提升为double,即使两个操作数都是float。 - 强制类型转换的格式为:(typeName)value/typeName(value),第一种来自C语言,第二种来自C++语言。 - 用引号括起的字符串隐式的包括了结尾的空字符。如“S”表示两个字符,而‘S’单表示一个字符,更糟糕的是,“S”表示的是一个内存的地址。 - strlen函数返回的是存储在数组中字符串的长度,而不是数组本身的长度。另外strlen不会计算空字符。 - 为了能够输入多个单词,可以使用cin.getline()函数和cin.get()函数,getline丢弃了换行符,存储时用空字符替换,而get保留在了输入序列中,所以在使用这种方法时,需要不带任何参数的cin.get()调用读取下一个字符,也可以连续调用,如cin.get(name, ArSize).get()。 - string在C++中是作为类出现。string类具有自动调整大小的功能。输入字符串的方法为getline(cin, str)。
1 | for (int i = 0; i < SIZE; i++) |
- 从存储空间的角度来讲,指针数组比char数组的数组更为经济。
- if(17 < age < 35)的含义为if((17 < age) < 35),所以一直为真。
- &&的优先级高于||,但是c++实际运行时是按顺序的,如果||在前面就先执行前面的,比如++x||++y&&z++。
-