Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
donglongtu
V2EX  ›  Linux

一道 C 语言 printf 的经典题目

  •  
  •   donglongtu · Jul 1, 2017 · 7172 views
    This topic created in 3416 days ago, the information mentioned may be changed or developed.

    下列程序,输出结果?

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

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

    31 replies  •  2017-07-03 09:20:19 +08:00
    waycool
    waycool
    Jul 1, 2017❤️1
    1
    4321
    21grams
    21grams
    Jul 1, 2017❤️1
    2
    有啥经典的
    ldbC5uTBj11yaeh5
    ldbC5uTBj11yaeh5
    Jul 1, 2017
    3
    来来来,自认 c/c++ 面霸们的试试这个 /t/370278#r_4451518
    darrenliuwei
    darrenliuwei
    Jul 1, 2017
    4
    @waycool 结果为什么会是 4321 啊?
    darrenliuwei
    darrenliuwei
    Jul 1, 2017
    5
    @waycool 我运行了,结果确实是 4321,但是不明白为什么会是 4321 ?
    markx
    markx
    Jul 1, 2017
    6
    @darrenliuwei 你查一查 printf 的返回值就明白了呀。
    Cooky
    Cooky
    Jul 1, 2017 via Android
    7
    @darrenliuwei printf 返回打印的字符串长度吧
    k9982874
    k9982874
    Jul 1, 2017 via iPad❤️2
    8
    有啥经典的?测试答题者熟不熟悉 printf 函数?
    low 的不行
    zonyitoo
    zonyitoo
    Jul 1, 2017
    9
    man 一下 printf 不就知道了,这问题纯粹就是看你有没有认真读过 printf 的函数文档罢了
    feather12315
    feather12315
    Jul 1, 2017 via Android
    10
    @darrenliuwei 一个命令:gcc -S
    换个字面的解释:AMD64 指令集,函数调用过程:第一、2 个参数,mov 到某个寄存器,rax 放系统调用号? 再 syscall。
    printf 第一个参数就是那个"%d",第二个参数呢?:)
    ldbC5uTBj11yaeh5
    ldbC5uTBj11yaeh5
    Jul 1, 2017
    11
    printf 比较经典面试题是 EMC 的某道校招题,和 fork 集合起来考察缓冲区的理解。比较不错。

    至于楼主这道,小学生。
    CEBBCAT
    CEBBCAT
    Jul 2, 2017 via Android
    12
    这题,考察的是执行顺序与返回值?
    20015jjw
    20015jjw
    Jul 2, 2017 via Android
    13
    给大佬们跪了...
    misaka20038numbe
    misaka20038numbe
    Jul 2, 2017
    14
    printf 返回值是 int,我看函数声明这样写
    ogfa
    ogfa
    Jul 2, 2017❤️1
    15
    就从这种帖子就能看出来这里的都是些什么水平的货色
    小学生真是高看它了

    回你的贴都是对人的一种侮辱
    lechain
    lechain
    Jul 2, 2017
    16
    看这里 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
    lechain
    Jul 2, 2017
    17
    man 手册里面对返回值的说明具体是这句话

    Upon successful return, these functions return the number of characters printed (excluding the null byte used to end output to strings).
    Shura
    Shura
    Jul 2, 2017 via Android
    18
    还不如这样考,printf("%d\n",printf("%d",scanf("%d%d",&a,&b)));
    sergeant
    sergeant
    Jul 2, 2017
    19
    别鄙视楼主了,至少我这个小学生学到了
    coderluan
    coderluan
    Jul 2, 2017
    20
    如果用了现实中不会出现的写法,那么这道题就提到不什么经典。
    Yunhao
    Yunhao
    Jul 2, 2017 via iPhone❤️3
    21
    为什么有些人的回复总喜欢充满恶意
    baixiangcpp
    baixiangcpp
    Jul 2, 2017
    22
    看不出哪里经典了,挺无聊的题目
    hjc4869
    hjc4869
    Jul 2, 2017 via iPhone
    23
    int x=100;
    printf("%d");

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

    所以 console 里面看到的是 4321,可以分开看:先打印 43,然后打印 2,然后打印 1,如果在调一层,就还是 1 ( 43211 )。
    momocraft
    momocraft
    Jul 2, 2017
    25
    第一次看错了, 以为是考参数计算顺序 (ub) 的
    shiji
    shiji
    Jul 2, 2017 via Android
    26
    这是在刷 seo 么,我记得今天在 segment fault 看见过一模一样的东西。
    21grams
    21grams
    Jul 2, 2017
    27
    回字有四种写法,你们都学到了吗?
    besto
    besto
    Jul 2, 2017
    28
    我来出一道题吧,关于 printf 的。
    #include <stdio.h>
    int main(){
    int n = 0;
    printf("HELLO %d\n%n", n, &n);
    printf("%d\n", n);
    return 0;
    }
    Vfeather
    Vfeather
    Jul 2, 2017
    29
    不是很理解。
    jeffersonpig
    jeffersonpig
    Jul 3, 2017
    30
    写了几年 C/C++从来没用过 printf 的返回值……
    araraloren
    araraloren
    Jul 3, 2017
    31
    @jigloo 不错 我还真不知道 sizeof('a') 在 c 和 c++ 里面竟然不一样。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1431 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    ♥ Do have faith in what you're doing.