1. 宏定义中包含多条语句,最好使用do…while(0)语句
#define PROCESS do{ cout<<"process"<<endl; cout<<"test" <<endl;}while(0)
2. 逻辑表达式中的短路问题
短路是指并未执行完条件判断语句就结束执行
int m = 10;
int n = 20;
if(m == 10 || n == 11) {} //执行完m==10,不再继续执行n==11
if(m != 10 && n == 20) {} //执行完m!=10,不再继续执行n==20
3. 处理字符的函数集 cctype
函数名称 | 返回值 |
isalnum() | 如果参数是字母数字,即字母或数字,该函数返回true |
isalpha() | 如果参数是字母,该函数返回真 |
isblank() | 如果参数是空格或水平制表符,该函数返回true |
iscntrl() | 如果参数是控制字符,该函数返回true |
isdigit() | 如果参数是数字(0~9),该函数返回true |
isgraph() | 如果参数是除空格之外的打印字符,该函数返回true,可打印字符指可显式表示的字符 |
islower() | 如果参数是小写字母,该函数返回true |
isprint() | 如果参数是打印字符(包括空格),该函数返回true |
ispunct() | 如果参数是标点符号,该函数返回true |
isspace() | 如果参数是标准空白字符,空白字符是空格(’ ‘),制表符(‘\t’),垂直制表符(‘\v’),回车符(‘\r’),换行符(‘\n’)和进纸符(‘\f’)(也即换页符)的任一种,该函数返回true |
isupper() | 如果参数是大写字母,该函数返回true |
isxdigit() | 如果参数是十六进制的数字,即0~9、a~f、A~F,该函数返回true |
tolower() | 如果参数是大写字符,则返回其小写,否则返回该参数 |
toupper() | 如果参数是小写字母,则返回其大写,否则返回该参数 |
4. ?操作符(包括三元操作符)
if(m == n)
{
s = "m == n";
}
else if(m < n)
{
s = "m < n";
}
else
{
s = "m > n";
}
s = (m == n)?"m == n":(m < n)?"m < n":"m > n";
if(m < n)
{
if(m == 3)
{
int i = 20;
i++;
i+=i*i;
cout << " i = " << i << endl;
s = "m < n && m == 3";
}
else
{
s = "m < n && m != 3";
}
}
else
{
s = "m >= n";
}
int i = 20;
s = (m < n)?((m == 3)?(i++, i+=i*i,cout << " i = " << i << endl, "m < n && m == 3"):"m < n && m != 3"):"m >= n";
// ?操作符中不能有变量声明
5. switch中表达||
if(2 == m || 3 == m)
{
cout << "abc" << endl;
}
switch (m) {
case 2:
case 3:
cout << "abc" << endl;
break;
default:
break;
}
return 0;