首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个额外的反斜杠字符不会影响我的程序。为什么?

问一个额外的反斜杠字符不会影响我的程序。为什么?
EN

Stack Overflow用户
提问于 2012-10-16 04:15:43
回答 2查看 316关注 0票数 5

这段代码可以在g++中正常工作和运行。我不知道为什么。它应该会给出一个错误。

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main(){
    int x=9;
    int y=6;
    //note that there is extra backslash in the end of if statement
    if(x==y)\
    {
        cout<<"x=y"<<endl;
    }
    //note that there is extra backslash in the end of if statement
    if(x!=y)\
    {
        cout<<"x!=y"<<endl;
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 04:16:45

来自C++标准:

(C++11,2.2p1)“删除紧跟换行符的每个反斜杠字符()实例,拼接物理源行以形成逻辑源行。只有任何物理源行上的最后一个反斜杠才有资格成为此类拼接的一部分。”

C语言说的完全一样:

(C11,5.1.1.2翻译阶段p1)“删除紧跟换行符的每个反斜杠字符()实例,拼接物理源代码行以形成逻辑源代码行。”

所以:

代码语言:javascript
复制
if(x==y)\
{
    cout<<"x=y"<<endl;
}

实际上相当于:

代码语言:javascript
复制
if(x==y){
    cout<<"x=y"<<endl;
}
票数 19
EN

Stack Overflow用户

发布于 2012-10-16 04:16:36

\转义换行符。g++将在一行中读取if(x==y){,这不是一个语法错误。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12903294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档