C/C++中的嵌套注释

Pri*_*pal 14 c c++ comments

这是一个面试问题: -

编写一个C程序,在编译和运行时,打印出一条消息,指示编译它的编译器是否允许嵌套/**/comments.

这个问题的解决方案如下: -

Sol: - 你可以有一个整数变量nest:

int nest = /*/*/0*/**/1;
Run Code Online (Sandbox Code Playgroud)

如果它支持嵌套注释,则答案为1,否则答案为0.

这是怎么回事?我不明白变量声明.

Fem*_*ref 22

如果编译器不允许嵌套,则第一个*/将终止多行注释的打开,这意味着0不会注释掉.写有一些空格:

int nest = /*/*/ 0 * /**/ 1;
Run Code Online (Sandbox Code Playgroud)

导致代码

int nest = 0 * 1; // -> 0
Run Code Online (Sandbox Code Playgroud)

如果它允许嵌套,它将是

int nest = /*/*/0*/**/ 1;
Run Code Online (Sandbox Code Playgroud)

导致

int nest = 1;
Run Code Online (Sandbox Code Playgroud)


ssu*_*ube 10

"这是如何工作"的简短回答是:

int nest = /*/*/0*/**/1;
Run Code Online (Sandbox Code Playgroud)

嵌套注释变成类似于:

int nest = 
// /* (comment level 1) 
//    /*/ (comment level 2) 
//         0
//    */*
// */
1;
Run Code Online (Sandbox Code Playgroud)

没有,额外*使它:

int nest = 
// /*/ (comment level 1) 
// */
        0
    *
// /*
// */
1;
Run Code Online (Sandbox Code Playgroud)

0*1.

或者,我认为这就是正在发生的事情,但这个问题几乎是一场灾难.我完全赞同Blagovest Buyukliev的评论.