A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 永远不会贬值 中级黑马   /  2014-6-2 22:32  /  1192 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>

int main()
{
    int i = 43;
    printf("%d\n",printf("%d",printf("%d",i)));
    return 0;
}

请问为什么输出结果是  4321   

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

5 个回复

倒序浏览
print()函数是有返回值得,返回打印的字符数,printf("%d\n",printf("%d",printf("%d",i)))打印过程:
1.printf("%d", i)     屏幕打印出43,函数返回2;
2.printf("%d",printf("%d", i))相当于printf("/%d", 2),屏幕打印出2,函数返回1;
3.同理,最后输出printf("%d\n", 1),也就是打印出1

点评

一步步都什么原理啊??求详解  发表于 2014-6-7 23:20

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上正解,具体可以查看那个ascii码表!
回复 使用道具 举报
函数先输出43而第二个输出时输出printf("%d",i)他返回的是2,第一个输出的是printf("%d",printf("%d",i))返回的是1.所以输出的是4321
回复 使用道具 举报
兰WX 发表于 2014-6-2 22:40
print()函数是有返回值得,返回打印的字符数,printf("%d\n",printf("%d",printf("%d",i)))打印过程:
1.pr ...
1.printf("%d", i)     屏幕打印出43,函数返回2;

请问这个返回值为什么是2啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马