我有以下代码片段,其中'b'是整数数组,MAX是整数,整数'ans'存储结果.我正在调试一些代码,因为我使用Java,所以对C++不是很熟悉.C++代码是:
for(i=0; i<MAX; i++)
ans+=(b[i]!=-1);
Run Code Online (Sandbox Code Playgroud)
我理解它的方式如下:
for(int i=0;i<MAX;i++)
if(b[i]!=-1)
ans+=b[i];
Run Code Online (Sandbox Code Playgroud)
但是,我对上面的逻辑得到了一个荒谬的答案.这句话到底意味着什么?
我认为Java等价物是
for(int i=0;i<MAX;i++)
if(b[i]!=-1)
ans++;
Run Code Online (Sandbox Code Playgroud)
在C++中,true语句的计算结果为1.Java不这样做,所以你必须明确增加ans.
另外,请注意,如果MAX是数组的长度(我不知道它是否是),你可以为每个循环使用a.
for (int a : b)
if (a != -1)
ans++;
Run Code Online (Sandbox Code Playgroud)