Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何解释这个简单C代码的输出? #包括 int main() { int i=10; printf(“%d”,printf(“%d”,i)); 返回(0); }_C_Printf - Fatal编程技术网

我如何解释这个简单C代码的输出? #包括 int main() { int i=10; printf(“%d”,printf(“%d”,i)); 返回(0); }

我如何解释这个简单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的文档说明它将返回一个整数,该整数表示

涡轮增压器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

引用
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
。现在是最高级别