...int a=5;int b=6;printf("%d",printf("%d%d",a,b));输出为什么是562...

发布网友 发布时间:2024-10-24 19:03

我来回答

5个回答

热心网友 时间:2024-10-27 02:37

先由嵌套在内部的printf("%d%d",a,b)打出56,再由外部的printf("%d",printf...);打印出嵌套在内部的printf("%d%d",a,b)的返回值2——因为内部的printf("%d%d",a,b)输出了两个数据a和b,所以返回输出数据个数是2。把这个语句拆开写就一目了然:
int a=5;
int b=6,tmp;//增设一个临时变量tmp
tmp=printf("%d%d",a,b);//把嵌套的printf("%d",printf("%d%d",a,b));拆成这两行
printf("%d",tmp);

热心网友 时间:2024-10-27 02:36

先执行里面的printf("%d%d",a,b)输出56没问题
printf函数的返回值通常是调用中输出字符的个数
,在题目中是2个
所以输出562
(2是输出的字符个数)
改下
你的程序,让你更明白
比如:
#include
"stdio.h"
void
main()
{
int
a=12;
int
b=1234566;
printf("%d",printf("%d,%d\n",a,b));/*里面的那个printf输出字符的个数为11*/
}
输出:
12,1234566
11

热心网友 时间:2024-10-27 02:38

呵呵,一个很经典的好题目:
printf()函数有返回值的
我们看看他们的定义形式:
int
printf(const
char
*format,[argument]);
实质:返回的是打印字符串的长度。
所以:
a=printf("nihao\n");
//a的值为6,
结论:
打印了5,6然后是里层的printf的返回值2,打印了2个字符嘛!
整个输出从右往左解析的。所以标准结果是:5,6,2
希望能对你有帮助!

热心网友 时间:2024-10-27 02:39

先执行里面的printf("%d%d",a,b)输出56没问题
printf函数的返回值通常是调用中输出字符的个数
,在题目中是2个
所以输出562
改下
你的程序,让你更明白
比如
#include
void
main(void){
int
a=5;int
b=6;printf("%d",printf("111%d%d",a,b));//里面的那个printf输出字符的个数为5个
}
输出:
111565Press
any
key
to
continue

热心网友 时间:2024-10-27 02:41

你好:
你指的括号里其实为逗号运算符,它是c语言中优先级最低的运算符,一般用法就是(a,b,c,…),这个逗号表达式的值永远为括号中最后一个数量的值,所以printf函数只有一个%d。
而输出呢,虽然看似为b--,但是这是后自减,就是对b进行输出后再减1。
有不懂的地方随时回复我。
希望我的回答能帮助到你。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com