b = false vs if(b)b = false

Edw*_*its 2 c if-statement boolean case switch-statement

我正在处理test.c文件并尝试计算其中的单行注释.

当我发现两个连续的/字符时,我将slc触发器设置为true.

当我到达行尾时,我需要设置slc触发器false.

当然,\n字符清楚地表明单行注释的结束.

switch (character)
{
    case '\n':
        slc = false; // single-line comment ended
        break;
Run Code Online (Sandbox Code Playgroud)

但是当\n发现角色时,slc可能是true或者false.

switch (character)
{
    case '\n':
        if (slc) slc = false; // single-line comment ended
        break;
Run Code Online (Sandbox Code Playgroud)

这两个代码块之间有什么区别吗?

我该怎么写?

Chr*_*yes 6

使用第一个表格.添加一个if不影响代码功能的额外检查,只有它的可读性,是不好的做法.您应始终尽可能以最简洁的方式编写不会模糊代码意图的方法.因为在这种情况下,您的意图始终是变量false,只需设置即可slc = false.