for循环与NULL条件,为什么printf();执行?

时间:2012-06-09 23:07:05

标签: c for-loop null

‎#include<stdio.h>

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

  return 0;
}

输出:STACK 我知道NULL的ascii值为0并且它是假的,但是当我在turbo c上运行时,这个程序给出输出“STACK”,它是如何可能的。

2 个答案:

答案 0 :(得分:4)

永远不会输出“STACK”。这是因为for语句的条件部分始终为假(假设NULL#define d为(void *)0

答案 1 :(得分:1)

turbo c编译器很古老(20岁)。你看到的行为是一个错误。 16位应用程序在您的操作系统上无法正常运行(Win7?)。

作为一种解决方法,您可以将NULL值分配给变量并在for循环的条件中使用它,或者甚至更好地切换到较新的编译器。像wxdev-cpp

一样