#define square(x) x * x

如果执行的是square(z + 1),那么替换后的结果为z + 1*z + 1,结果是不对的,所以使用宏的时候还是得非常小心。

c++中auto的使用

根据初始化表达式自动推断被声明的变量的类型,如:

1
2
3
4
auto f=3.14; //double
auto s("hello"); //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型

auto关键字更适用于类型冗长复杂、变量使用范围专一时,使程序更清晰易读:

1
2
3
4
5
std::vector<int> vect;
for(auto it = vect.begin(); it != vect.end(); ++it)
{ //it的类型是std::vector<int>::iterator
std::cin >> *it;
}