1. 对于float,C++只保证6位有效位,如果需要更高的精度,使用double或long double。
2. 类型转换:对不同类型进行运算时,C++将把它们转换为同一类型。
(1)浮点常量在默认情况下为double类型。
(2)将浮点型转换为整型时,C++采取截取(丢弃小数部分)而不是四舍五入。
3. 求模运算符返回整数除法的余数,它与整数除法相结合,尤其适用于解决要求将一个量分成不同整数单元的问题。例如将英寸转换为英尺和英寸。
4. sizeof是C++的一个操作符,作用是返回一个对象或者类型所占用的内存字节数。其计算发生在编译时刻,因此可以被当作常量表达式使用。如果将sizeof用于数组名,返回的是整个数组的长度(字节数),而sizeof用于数组元素,返回的是这个元素的长度。
5. strlen()函数返回的是存储在数组中字符串的长度,而不是数组本身的长度。且只计算可见的字符,不把空字符'\0'计算在内。如果cosmic是字符串,则存储此字符串的数组长度不能小于strlen(cosmic)+1。
6. cin使用空白(空格、制表符和换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入时只读取一个单词,将其放到数组中,并自动在结尾添加空字符。
7. istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()。这俩函数都读取一行输入,直到到达换行符。区别是,getline()将丢弃换行符,而get()将换行符保留在输入序列中。
(1)面向行的输入:getline()。调用方法:cin.getline()
该函数包含两个参数,第一个参数用来存储输入行的数组的名称,第二个参数指出要读取的字符数,如果此参数为20,则最多读取19个字符,余下的空间用于存储在结尾自动添加的空字符。getline()成员函数在读取指定数目的字符或遇到换行符时停止读取。
// instr2.cpp -- reading more than one word with getline
#include <iostream>
int main()
{
using namespace std;
const int ArSize = 20;
char name[ArSize];
char dessert[ArSize];
cout << "Enter your name: \n";
cin.getline(name, ArSize); //reads through newline
cout << "Enter your favorite dessert: \n";
cin.getline(dessert, ArSize);
cout << "I have some delicious " << dessert;
cout << " for you, " << name << ".\n";
return 0;
}
(2)面向行的输入:get()
使用不带任何参数的cin.get()调用可读取下一个字符(即使时换行符)。注意,get()函数在调用后,会将换行符留在输入队列里。注意采用下面的调用序列:
cin.get(name, ArSize);
cin.get();
cin.get(dessert, ArSize);
另一种使用get()的方式是将两个类成员函数拼接起来: