为什么这段代码会返回Garbage值?

时间:2013-08-31 15:17:59

标签: c printf conditional-statements

我的代码:

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

我知道printf()会返回打印的字符数。所以,为什么上面的代码在输出1时会输出Garbage values。 请解释一下。

感谢。

3 个答案:

答案 0 :(得分:4)

因为第二个printf缺少它应该打印的数字......

顺便说一下,不要只看到1,你会看到之前第二个printf打印的数字。例如。如果你的代码是

printf("%d",printf("%d", 7));
你会看到71;先打印7,然后打印1.

答案 1 :(得分:2)

因为您没有为内部printf的{​​{1}}

提供参数

检查:

%d,请注意我在if(printf("%d",printf("%d ",3)))

之后使用了一个空格

现在你会看到

%d

由于额外的空间,

最后3 2

答案 2 :(得分:0)

printf("%d",printf("%d"))

等于

int i = printf("%d");
printf("%d",i);

但是,int i =printf("%d");行将打印垃圾值,因为您没有为其提供所需的值。