一道 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 语言的几道经典面试题

5529 次点击
所在节点    Linux
31 条回复
Yunhao
2017-07-02 10:58:13 +08:00
为什么有些人的回复总喜欢充满恶意
baixiangcpp
2017-07-02 11:31:05 +08:00
看不出哪里经典了,挺无聊的题目
hjc4869
2017-07-02 11:47:26 +08:00
int x=100;
printf("%d");

32bit msvc cl -O0 编译
输出?
LigeLaige
2017-07-02 12:17:14 +08:00
printf 簇函数 ( printf/sprintf/fprintf ) 返回打印的字符串的长度
printf "43" 返回长度 2, "2" 返回长度 1 (延伸:"1" 还是返回 1 )

所以 console 里面看到的是 4321,可以分开看:先打印 43,然后打印 2,然后打印 1,如果在调一层,就还是 1 ( 43211 )。
momocraft
2017-07-02 12:44:00 +08:00
第一次看错了, 以为是考参数计算顺序 (ub) 的
shiji
2017-07-02 12:50:23 +08:00
这是在刷 seo 么,我记得今天在 segment fault 看见过一模一样的东西。
21grams
2017-07-02 13:08:30 +08:00
回字有四种写法,你们都学到了吗?
besto
2017-07-02 14:34:31 +08:00
我来出一道题吧,关于 printf 的。
#include <stdio.h>
int main(){
int n = 0;
printf("HELLO %d\n%n", n, &n);
printf("%d\n", n);
return 0;
}
Vfeather
2017-07-02 22:25:37 +08:00
不是很理解。
jeffersonpig
2017-07-03 09:08:51 +08:00
写了几年 C/C++从来没用过 printf 的返回值……
araraloren
2017-07-03 09:20:19 +08:00
@jigloo 不错 我还真不知道 sizeof('a') 在 c 和 c++ 里面竟然不一样。。

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

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

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

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

© 2021 V2EX