我正在编写一个计算代码行的小程序。以下是一行代码的定义: - 包含程序运行所需代码的任何行。 - 空白行不是一行代码。 - 评论不是一行代码。 - 如果在同一行之后有代码和评论,那么它也很重要。
所以我有这段代码(简单的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
,因为下一行的文本仍在块注释中。)
任何人都知道为什么会这样?
答案 0 :(得分:9)
你的问题是臭名昭着的双重等号。&#34;
inComment == true;
在C ++中,==
用于比较,不用于赋值。我想你想要的是:
inComment = true;
答案 1 :(得分:0)
双等号用于比较而不是赋值。可能只是一个错字,因为我认为你知道这一点。但是,是的,将==
改为=
: - )