#include<stdio.h>
int main()
{
for(;NULL;)
printf("STACK");
return 0;
}
output: STACK NULL には ascii 値 0 があり、それは false であることはわかっていますが、turbo c で実行すると、このプログラムは出力 "STACK" を出力します。
「STACK」は出力されません。これは、for
ステートメントの条件部分が常に false であるためです ( NULL
is #define
d as (void *)0
.
ターボcコンパイラは古くからあります(20年前)。あなたが見ている振る舞いはバグです。16ビットアプリケーションがOS(Win7?)で正しく実行されていません。
回避策として、変数にNULL値を割り当て、それをforループの条件で使用するか、新しいコンパイラに切り替えることをお勧めします。wxdev -cppのように