我正在编写一个代码,它将遍历直方图中的每个bin,并检查是否存在任何非零bin。如果有,它会抛出一条错误消息。我的问题是,我希望它跳过一个bin,因为这个bin不应该是空的,而是检查所有其他的bin。
唯一的事情就是创造一个无限循环。这是我的代码
Int_t y;
for (int i = 0; i <= 100; i++) {
y = hist - > GetBinContent(i)
if (i = 1) continue;
else if (y != 0) {
std: cout << * * * * * ERROR * * * * * << std: endl;
break;
}
}
正在发生的事情是它为i = 0
评估它,跳过i = 1
,然后点击i = 2
并不断地一遍又一遍地评估它。如果我拿出“if(i = 1)继续;”然后它运作。
有什么想法吗?
答案 0 :(得分:7)
试试这个
if (i==1) continue;
i=1
表示您将1
分配给i
。 =
表示分配,==
表示比较。
在您的代码中,使用i
时,1
的值始终为i=1
答案 1 :(得分:2)
如果循环出错,有时会在循环中使用断点或在其中放置打印语句的调试模式下运行它。您的错误来自该行:
if (i=1) continue;
。段i=1
将i设置为1并返回i的值,该值被解释为true(因为它不为零)。然后它进入下一次迭代,它将再次将i设置为1。您的意思是if (i==1) continue;
。这将执行比较运算符,这是您的意图。