为什么我的if语句跳过了else?

时间:2014-05-28 18:03:46

标签: c++ string if-statement counting

我正在编写一个计算代码行的小程序。以下是一行代码的定义: - 包含程序运行所需代码的任何行。 - 空白行不是一行代码。 - 评论不是一行代码。 - 如果在同一行之后有代码和评论,那么它也很重要。

所以我有这段代码(简单的if语句):

found = lineRead.find("/*");
if(found != string::npos)
{
    found = lineRead.find("*/");
    if(found != string::npos)
        inComment = false;
    else
        inComment == true;
}
return inComment;

假设

String lineRead = "cout<<\"helloworld!\";/*blockcomment"
Bool inComment (is true if the previous line didn't have end block comment token)

所以我的程序到达第一个if语句,因为它在该行中找到/*,查找*/,转到第二个if语句,然后直接跳转到return语句而不更改{{1} }(应该设置为inComment,因为下一行的文本仍在块注释中。)

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:9)

你的问题是臭名昭着的双重等号。&#34;
inComment == true;

在C ++中,==用于比较,不用于赋值。我想你想要的是:   inComment = true;

答案 1 :(得分:0)

双等号用于比较而不是赋值。可能只是一个错字,因为我认为你知道这一点。但是,是的,将==改为=: - )