我如何解释这个简单C代码的输出? #包括 int main() { int i=10; printf(“%d”,printf(“%d”,i)); 返回(0); }
涡轮增压器C的输出 102 我是初学者。那么,您能解释一下这段代码是如何工作的吗?的文档说明它将返回一个整数,该整数表示写入输出流的字符数 这意味着您可以在对我如何解释这个简单C代码的输出? #包括 int main() { int i=10; printf(“%d”,printf(“%d”,i)); 返回(0); },c,printf,C,Printf,涡轮增压器C的输出 102 我是初学者。那么,您能解释一下这段代码是如何工作的吗?的文档说明它将返回一个整数,该整数表示写入输出流的字符数 这意味着您可以在对printf的另一次调用中使用printf的返回值来满足%d格式说明符的要求,第二次(外部)调用将打印出第一次调用中写入的字符数 i等于10,因此对printf的第一次调用将输出数字10,并返回2(字符串中的字符数“10”),该数字将传递给对printf的第二次调用,后者将打印2,为您提供最终输出102的文档说明它将返回一个整数,该整数表示
printf
的另一次调用中使用printf
的返回值来满足%d
格式说明符的要求,第二次(外部)调用将打印出第一次调用中写入的字符数
i
等于10
,因此对printf
的第一次调用将输出数字10
,并返回2
(字符串中的字符数“10”
),该数字将传递给对printf
的第二次调用,后者将打印2
,为您提供最终输出102
的文档说明它将返回一个整数,该整数表示写入输出流的字符数
这意味着您可以在对printf
的另一次调用中使用printf
的返回值来满足%d
格式说明符的要求,第二次(外部)调用将打印出第一次调用中写入的字符数
i
等于10
,因此对printf
的第一次调用将输出数字10
,并返回2
(字符串中的字符数“10”
),该数字将传递给对printf
的第二次调用,后者将打印2
,为您提供最终输出102
引用C11
,第§7.21.6.1章
fprintf
函数返回传输的字符数或负值
如果发生输出或编码错误
在您的例子中,内部printf()
调用是外部printf()
的参数,因此将根据函数参数求值规则执行内部函数调用
因此,在您的情况下,首先执行内部printf()
,打印i
的值,即10
(2个字符)和printf()
调用的返回值,作为外部printf()
中%d
格式说明符的参数,打印2
由于不存在可视分隔符,您可以看到输出彼此相邻,显示为
102
引用C11
,第§7.21.6.1章
fprintf
函数返回传输的字符数或负值
如果发生输出或编码错误
在您的例子中,内部printf()
调用是外部printf()
的参数,因此将根据函数参数求值规则执行内部函数调用
因此,在您的情况下,首先执行内部printf()
,打印i
的值,即10
(2个字符)和printf()
调用的返回值,作为外部printf()
中%d
格式说明符的参数,打印2
由于不存在可视分隔符,您可以看到输出彼此相邻,显示为102
printf()是一个C函数。它返回的int值等于它打印的字节数
在您的例子中,内部printf打印“10”,因此它写入了2个字节并返回2
因此,外部printf将打印“2”
最终结果:“102”(“10”的内部后面跟着“2”的外部)。printf()是一个C函数。它返回的int值等于它打印的字节数
在您的例子中,内部printf打印“10”,因此它写入了2个字节并返回2
因此,外部printf将打印“2”
最终结果:内部为“102”(“10”,后面是外部为“2”)让我们分析一下产生输出的顶层语句:
#include<stdio.h>
int main()
{
int i=10;
printf("%d",printf("%d",i));
return(0);
}
- 我们在顶层有一个函数调用
,将两个参数传递给函数printf
- 顶级printf的第一个参数是格式字符串
“%d”
- 顶级
的第二个参数是调用printf
printf(“%d”,i)
printf
的参数,即printf(“%d”,i)
,需要在进行调用之前进行评估。表达式有一个值和一个副作用。副作用是将“10”
打印到输出,该值是打印的字符数,即2
由于参数是在进行调用之前计算的,因此首先调用
printf(“%d”,i)
,生成输出10
。现在调用顶级的printf
,它生成输出2
,完成您看到的“102”
序列。让我们分析一下生成输出的顶级语句:
#include<stdio.h>
int main()
{
int i=10;
printf("%d",printf("%d",i));
return(0);
}
- 我们在顶层有一个函数调用
,将两个参数传递给函数printf
- 顶级printf的第一个参数是格式字符串
“%d”
- 顶级
的第二个参数是调用printf
printf(“%d”,i)
printf
的参数,即printf(“%d”,i)
,需要在进行调用之前进行评估。表达式有一个值和一个副作用。副作用是将“10”
打印到输出,该值是打印的字符数,即2
由于参数是在进行调用之前计算的,因此首先调用printf(“%d”,i)
,生成输出10
。现在是最高级别