#include<bits/stdc++.h>
#include <climits>
using namespace std;
int main() {
//string 2 Integer && Integer 2 string
//int stoi (const string& str, size_t* idx = 0, int base = 10);
//Other functions are similar
cout << stoi(to_string(INT_MAX), 0, 10) << endl;
cout << stoi(to_string(INT_MIN)) << endl;
cout << stol(to_string(LONG_MAX)) << endl;
cout << stol(to_string(LONG_MIN)) << endl;
cout << stoul(to_string(ULONG_MAX)) << endl;
cout << stof(to_string(FLT_MAX)) << endl;
cout << stod(to_string(DBL_MAX)) << endl;
// ostringstream stream;
// stream << INT_MAX;
// cout << stream.str() << endl;
return 0;
}
例子一
#define FOO(x) foo(x); bar(x)
if (condition)
FOO(x);
else // syntax error here
...;
此时 foo(x) 和 bar(x) 两个函数,只有 foo(x) 会处于 if 的条件下,我们可以加上花括号
例子二
#define FOO(x) { foo(x); bar(x); }
if (condition)
FOO(x)
else
...
此时,FOO(x) 后面没有添加分号 ; ,这是违反直觉的,所以我们可以用do while(0) 解决这个问题
例子三
#define FOO(x) do { foo(x); bar(x); } while (0)
if (condition)
FOO(x);
else
....
上面的问题都可以迎刃而解
原文:https://www.cnblogs.com/jamgun/p/14792076.html