2012-06-09 61 views
1
‎#include<stdio.h> 

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

    return 0; 
} 

輸出:STACK 我知道NULL有ascii值爲0,它是錯誤的,但是當我在turbo c上運行時,此程序給出輸出「堆棧」,它是如何可能的。帶NULL條件的for循環,爲什麼printf();執行?

+2

你的問題不太清楚,請問可以請你改寫一下嗎? – Levon

+2

我沒有得到任何輸出我編譯並運行這個。這是你的*實際*代碼,而你*實際上*從它獲得輸出? – jwodder

+0

@jwodder我*想* OP想知道爲什麼沒有輸出..這是因爲for循環從來沒有進入(空使條件部分失敗),但這只是我的猜測,問題根本不清楚不幸的是 – Levon

回答

1

渦輪C編譯器是古(20歲),你所看到的行爲是一個bug,這16位應用程序在您的操作系統上運行不正常(Win7?)

作爲解決方法,您可以將NULL值分配給變量並在for循環的條件中使用該值,或者甚至更好地切換到較新的編譯器。像wxdev-cpp

+0

好吧然後嘗試這個c程序在你的c編譯器..我的問題是爲什麼for-loop是真實的,輸出是「堆棧」 –

+0

因爲你編譯它與渦輪增壓c,這不正確。 – tomato

+0

gcc或turbo c編譯器都給出給定的c程序相同的輸出。 –

4

「堆棧」從不輸出。這是因爲for語句的條件部分總是假的(假設NULL#define d爲(void *)0

+0

#include int main(){ for(; NULL;) printf(「STACK」); return 0; } 我在c編譯器上運行它,它的輸出是堆棧,我的意思是條件爲真。 –

+1

@nasamind你是說你*正在堆疊打印出來嗎?這看起來不太可能,而且你爲什麼會接受這個答案,而這個答案卻是相反的(我同意這個答案)。這一切都很混亂。 – Levon

+1

也許他有一個';'在'for(; NULL;)'之後?只是猜... – wildplasser