1
‎#include<stdio.h>

int main()
{
  for(;NULL;)
    printf("STACK");

  return 0;
}

output: STACK NULL には ascii 値 0 があり、それは false であることはわかっていますが、turbo c で実行すると、このプログラムは出力 "STACK" を出力します。

4

2 に答える 2

4

「STACK」は出力されません。これは、forステートメントの条件部分が常に false であるためです ( NULLis #defined as (void *)0.

于 2012-06-09T23:10:56.277 に答える
1

ターボcコンパイラは古くからあります(20年前)。あなたが見ている振る舞いはバグです。16ビットアプリケーションがOS(Win7?)で正しく実行されていません。

回避策として、変数にNULL値を割り当て、それをforループの条件で使用するか、新しいコンパイラに切り替えることをお勧めします。wxdev -cppのように

于 2012-06-10T08:15:32.223 に答える