-3

我的代码:

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

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

谢谢。

4

3 回答 3

4

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

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

printf("%d",printf("%d", 7));

你会看到 71;将打印前 7 个,然后打印 1 个。

于 2013-08-31T15:19:23.067 回答
2

因为您没有为 inner 提供printf参数%d

检查:

if(printf("%d",printf("%d ",3))),请注意我在后面使用了一个空格%d

现在你会看到

3 2

最后2是因为有多余的空间

于 2013-08-31T15:20:11.837 回答
0
printf("%d",printf("%d"))

等于

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

但是,该int i =printf("%d");行将打印一个垃圾值,因为您没有给它所需的值。

于 2013-08-31T15:58:57.047 回答