2014-03-24 88 views
-5
#include<stdio.h> 

void main() 
{ 
    while(1) 
    { 
     if(printf("%d",printf("%d"))) 
      break; 
     else 
      continue; 
    } 
} 

如何才能在if子句中聲明?以下C代碼的輸出是什麼?它是如何工作的?

我得到的輸出是Undefined values

+5

「什麼是輸出......」你不能運行它並親自查看嗎?此外,這些代碼來自哪裏?因爲它*不工作(代碼無效,'printf(「%d」)'需要另一個參數)。 – TypeIA

+5

上面的程序調用** Undefined Behavior **。根據語言的規則,它可以做任何事情,例如它可以將您的銀行賬戶中的資金轉移到我的賬戶:) – pmg

+1

@dvnrrs好吧,「不起作用」是一個索賠的地獄。它會做一些事情。然而,它會是什麼,但沒有說明:-) – keltar

回答

1

怎麼會是如果子句的聲明?

printf返回要打印的字符數。 C中的任何非零值都可以評估爲true,您可以使用返回值來測試if條件。

除此之外,您的程序會調用未定義的行爲,因爲您未在內部printf中傳遞%d的參數。