解释printf的返回值

时间:2017-01-24 16:59:43

标签: c

int main (void){
const int y = 99;
printf("%d\n", printf("y = %d", y));
}

此程序打印" y = 996",我希望有助于理解。

首先,

printf("y = %d", y)打印出y = 99

所以最终表达的其余部分是:

printf("%d\n", "y = 99");

但是这应该是无效的,因为%d需要一个数字,而不是charArray?

3 个答案:

答案 0 :(得分:2)

Html.send函数返回打印的字节数。该值是传递给第二次调用的值。

内部通话打印printf,即6个字符。因此外部调用接收6作为第二个参数:

y = 99

因此输出为printf("%d\n", 6);

答案 1 :(得分:2)

让我举一个简单的例子来澄清你的怀疑:

示例:

 void main(void)
    {
    int b=printf("hellow");
    printf("%d",b);
    }

输出

  6

printf(" message")是一个预定义的方法,它返回" no。消息中出现的字符" 如上例所示。

你编码:

int main (void){
const int y = 99;
printf("%d\n", printf("y = %d", y));   
}

注意:打印消息后printf()始终返回int值,该值不是字符,因为printf()的返回类型是int类型。

步骤1:内部printf()函数首先打印99。

步骤2:执行后返回6,否则为。消息中的字符。

消息是" y =%d"

步骤3:6由外部printf()函数保存为: -

  printf("%d",6);

因此,它同时提供输出:

 996

答案 2 :(得分:1)

虽然printf会将字符串打印到stdout,但返回的内容是一个整数,表示打印出来的字符数。

printfprintf("y = %d", y)的嵌套调用打印出99并返回6,因为字符串"y = 99"长度为6个字符,这使外部调用printf,它将嵌套调用的返回值作为参数获取,产生输出6,最终输出为996。