Turbo C++ 错误地执行条件为 0 的循环
Turbo C++ erroneously executes loop with literal 0 in condition
我在for
循环的条件中写了0所以它执行了一次,当我写j而不是0并且j被初始化为0时for循环甚至没有执行一次。背后的原因是什么?
for(i=0;0;i++)
和
j = 0;
for(i=0;j;i++)
第一个执行了一次,下一个没有执行
编辑:
这是 Turbo C++ 编译器中的错误。
这是一个基本的 C 问题,您应该能够自己回答。 for
结构中的第二个参数是条件参数。如果它的计算结果为真,则循环继续。如果计算结果为 false,则循环停止。
当您将第二个参数设置为文字 0
或设置为零的变量 j
时,您将其设置为计算结果为逻辑假的值。
这是 Turbo c++ 中的错误
版本:3.2.2.0
Github as an Issue 上报告了以下问题:
以下gif将提供错误解释。
gif of execution of the above
再生代码
void main()
{
int i,j=0;
clrscr();
for(i = 0; 0 ; i++) // you could try replacing 0 with variable j
printf("\nHello");
getch();
}
我在for
循环的条件中写了0所以它执行了一次,当我写j而不是0并且j被初始化为0时for循环甚至没有执行一次。背后的原因是什么?
for(i=0;0;i++)
和
j = 0;
for(i=0;j;i++)
第一个执行了一次,下一个没有执行
编辑:
这是 Turbo C++ 编译器中的错误。
这是一个基本的 C 问题,您应该能够自己回答。 for
结构中的第二个参数是条件参数。如果它的计算结果为真,则循环继续。如果计算结果为 false,则循环停止。
当您将第二个参数设置为文字 0
或设置为零的变量 j
时,您将其设置为计算结果为逻辑假的值。
这是 Turbo c++ 中的错误
版本:3.2.2.0
Github as an Issue 上报告了以下问题:
以下gif将提供错误解释。 gif of execution of the above
再生代码
void main()
{
int i,j=0;
clrscr();
for(i = 0; 0 ; i++) // you could try replacing 0 with variable j
printf("\nHello");
getch();
}