一道 C 语言 printf 的经典题目

2017-07-01 22:12:46 +08:00
 donglongtu

下列程序,输出结果?

#include <stdio.h>
int main() {
    int i = 43;
    printf("%d\n",printf("%d",printf("%d",i)));
    return 0;
}

原系列出处:Linux 下 C 语言的几道经典面试题

5526 次点击
所在节点    Linux
31 条回复
waycool
2017-07-01 22:31:53 +08:00
4321
21grams
2017-07-01 23:04:11 +08:00
有啥经典的
ldbC5uTBj11yaeh5
2017-07-01 23:05:26 +08:00
来来来,自认 c/c++ 面霸们的试试这个 /t/370278#r_4451518
darrenliuwei
2017-07-01 23:24:04 +08:00
@waycool 结果为什么会是 4321 啊?
darrenliuwei
2017-07-01 23:25:00 +08:00
@waycool 我运行了,结果确实是 4321,但是不明白为什么会是 4321 ?
markx
2017-07-01 23:27:37 +08:00
@darrenliuwei 你查一查 printf 的返回值就明白了呀。
Cooky
2017-07-01 23:27:45 +08:00
@darrenliuwei printf 返回打印的字符串长度吧
k9982874
2017-07-01 23:28:14 +08:00
有啥经典的?测试答题者熟不熟悉 printf 函数?
low 的不行
zonyitoo
2017-07-01 23:29:58 +08:00
man 一下 printf 不就知道了,这问题纯粹就是看你有没有认真读过 printf 的函数文档罢了
feather12315
2017-07-01 23:31:23 +08:00
@darrenliuwei 一个命令:gcc -S
换个字面的解释:AMD64 指令集,函数调用过程:第一、2 个参数,mov 到某个寄存器,rax 放系统调用号? 再 syscall。
printf 第一个参数就是那个"%d",第二个参数呢?:)
ldbC5uTBj11yaeh5
2017-07-01 23:32:02 +08:00
printf 比较经典面试题是 EMC 的某道校招题,和 fork 集合起来考察缓冲区的理解。比较不错。

至于楼主这道,小学生。
CEBBCAT
2017-07-02 03:33:38 +08:00
这题,考察的是执行顺序与返回值?
20015jjw
2017-07-02 04:23:44 +08:00
给大佬们跪了...
misaka20038numbe
2017-07-02 06:39:09 +08:00
printf 返回值是 int,我看函数声明这样写
ogfa
2017-07-02 06:49:55 +08:00
就从这种帖子就能看出来这里的都是些什么水平的货色
小学生真是高看它了

回你的贴都是对人的一种侮辱
lechain
2017-07-02 08:43:32 +08:00
看这里 https://linux.die.net/man/3/printf
或者在自己的电脑上这样子
```
cat /usr/include/stdio.h | grep printf
extern int fprintf (FILE *__restrict __stream,
extern int printf (const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
·······
```

看第三行, 有返回值的
lechain
2017-07-02 08:45:34 +08:00
man 手册里面对返回值的说明具体是这句话

Upon successful return, these functions return the number of characters printed (excluding the null byte used to end output to strings).
Shura
2017-07-02 09:40:37 +08:00
还不如这样考,printf("%d\n",printf("%d",scanf("%d%d",&a,&b)));
sergeant
2017-07-02 10:00:21 +08:00
别鄙视楼主了,至少我这个小学生学到了
coderluan
2017-07-02 10:26:19 +08:00
如果用了现实中不会出现的写法,那么这道题就提到不什么经典。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX