之间有区别吗;
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和
int main(){return 0;}
Run Code Online (Sandbox Code Playgroud)
和
int main(){
return
0;
}
Run Code Online (Sandbox Code Playgroud)
它们都可能编译为相同的可执行文件。C/C++ 编译器如何处理多余的空格和换行符,以及处理换行符的方式与 C 代码中空格的方式是否存在差异?
另外,标签怎么样?如果有的话,在代码中使用制表符而不是空格有何意义?
任何 1 个以上空白符号(空格/换行符/制表符/...)的序列都相当于一个空格。
例外情况:
R"(...)") 除外。这同样适用于#include.//) 仅以换行符结束。#)仅以换行符终止。\后面的换行符会删除两者,从而允许多行//注释、预处理器指令和字符串文字。_此外,如果空白符号的左侧和/或右侧有标点符号(字母、数字和 除外),则空白符号将被忽略。例如1 + 2和1+2相同,但return a;和returna;不同。
例外情况:
显然,字符串文字中的空格不会被忽略。也不在#include文件名中。
由 >1 个标点符号组成的运算符不能分开,例如cout < < 1是非法的。这同样适用于//和 等事物/* */。
标点符号之间可能需要一个空格,以防止其合并为单个运算符。例子:
+ +a不同于++a.a+++b相当于a++ +b,但不等于a+ ++b。std::vector<std::vector<int> >。定义类似函数的宏时,左括号前不允许有空格(添加它会将其变成类似对象的宏)。例如,#define A()不替换A()任何内容,但#define A ()替换A为().