我总是记住这个问题,当我尝试执行以下操作时,c和java都有不同的输出
在C:
int i=5;
while(i--)
{
printf(i);
}
Run Code Online (Sandbox Code Playgroud)
输出:54321
在java中
int i=5;
while(i--) // Compilation error
{
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
为什么?条件时发生编译错误
在Java中,整数类型(int,long等等)和布尔类型之间存在分离.因此,在需要布尔值的情况下,不能使用返回int的表达式.
因此,Java中的条件必须是:
while (i-- > 0)
Run Code Online (Sandbox Code Playgroud)
在C中,等于0的int可以被视为false,这就是为什么while (i--)有效.
PS我假设iJava代码中缺少的初始化是一个遗漏.