通过加括号来提示编译器我们这里提供的是构造函数的参数而非参数声明,因为 (istream_iterator<string> (cin)) 不能解析为变量声明,这个更void f ( (int i)) 不可能是函数声明是一回事。多一对括号不可能解释为合法的声明语句。
2.关于double 和float 区别
一个例子
int main() { double x = 1e8; while(x >0) x--; return0; }
现在的编译器一秒就可能运行完成, 如果吧doubel x = 1e8 ,换为 float x = 1e8; C++标准说 : 浮点类型有三种: float ,double, long double,关于精度很显然 如果换成float 答案很诡异,因为取决于float的精度,能否表达0 1e8区间的整数
所以如果换为 float,可能运行一秒,也可能是死循环,因为如果float不能表达0 1e8区间的整数, 因为其中 n-1 = n (由于浮点精度不够) 。
3. 一些拼写代码错误
#include <iostream> #include <iomanip> usingnamespace std; int main() { int x =1; for (int i =0 ; i <100; i++) { ; } // 下面这行代码会干些什么?递增???????/ ++x; std::cout << x << std::endl; return0; }