string s;
s += '\0';
s += '\t';
if (s == "\0\t")
cout << "Yahoo";
Run Code Online (Sandbox Code Playgroud)
我不能得到"雅虎".
这是否意味着如果我想检查这样的字符串,我必须像这样编码?
if (s[0] == '\0' && s[1] == '\t')
cout << "Yahoo";
Run Code Online (Sandbox Code Playgroud) if语句的一个分支不能只是一个声明.如果我们需要在分支中引入一个名称,它必须被包含在一个块中.------由TC++ PL 4th.
void f1(int i)
{
if (i)
int x = i + 2; //error: declaration of if-statement branch
}
Run Code Online (Sandbox Code Playgroud)
但它对VS2013和GCC4.8的编译器有意义.
工作草案(N3242)向我展示了这一点
如果selection-statement中的子语句是单个语句而不是复合语句,则就好像它被重写为包含原始子语句的复合语句一样.
代码可以等效地重写为:
void f1(int i)
{
if (i) {
int x = i + 2;
}
}
Run Code Online (Sandbox Code Playgroud)
因此在if语句之后,x不再在范围内.
那么标准是什么?