美文网首页
printf总是打印0

printf总是打印0

作者: 梦终无痕_311d | 来源:发表于2020-06-13 01:32 被阅读0次

    好久没用 c 的 printf 输出了,然后今天调程序就遇到了一个奇怪的错误,如下:

    long long n = 9999;
    long long m = 8888;
    printf("%d %d\n", n, m);
    

    输出结果如下:

    9999 0
    

    想了好久都没有想出原因,最后试着增减参数,终于发现了问题。(后面才发现编译器的警告里都写清楚了,只是日常不看 warning ……)

    原因

    警告 C4477 “printf” : 格式字符串“ % d”需要类型“int”的参数,但可变参数 1 拥有了类型“__int64”
    n 是 long long 类型,占8位!而 %d 是打印 int 整形数据的,int 只占四位,所以,第一个 %d 打印了 n 的低八位,第二个 %d 打印了 n 的高八位!(小端模式的情况下)
    至于后面的 m ,直接被忽略掉了……

    解决方法

    直接把 %d 改成 %lld 就好了:

    long long n = 9999;
    long long m = 8888;
    printf("%lld %lld\n", n, m);
    

    相关文章

      网友评论

          本文标题:printf总是打印0

          本文链接:https://www.haomeiwen.com/subject/hqgotktx.html