Nis*_*ary 7 c++ string string-literals
我正在打印这样一条线
cout<<"Hello //stackoverflow";
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出
Hello //stackoverflow
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它没有给我一个错误,因为我评论了一半的陈述,应该有
missing terminating " character
Run Code Online (Sandbox Code Playgroud)
错误.
要对此进行深入分析,您必须参考语言语法,特别是字符串文字生成规则.
非正式地说,//引用的字符串文字中出现的事实意味着它不表示注释块.这同样适用于/*和*/.
反过来适用于其他构造,其中最大munch需要解析为表示注释块开始的标记; 指针取消引用操作符之前需要一个空格
#include <iostream>
using namespace std;
int main() {
int n = 1;
int* p = &n;
cout << 1 / *p; // Removing the final space will fail compilation.
}
Run Code Online (Sandbox Code Playgroud)