18345093167 发表于 2016-08-16 11:37

奇葩的输出

#incldue<stdio.h>
int main()
{
    long long int a = 1,b =2,c= 3;
    printf("%d %d %d\n",a,b,c);
   return 0;
}
运行结果?
理由?
望大神指教,尽量画下图呗(x86 小端存储)

王楠w_n 发表于 2016-08-16 13:03

虽然不会,帮忙顶回复 1# 18345093167


   

hellioncu 发表于 2016-08-16 13:38

long long int是64位的,应该用printf("%"PRId64,...)输出,PRId64之类的在inttypes.h中定义。

cjfeii 发表于 2016-08-16 14:22

试一下 %ld

MMMIX 发表于 2016-08-16 15:36

hellioncu 发表于 2016-08-16 13:38 static/image/common/back.gif
long long int是64位的,应该用printf("%"PRId64,...)输出,PRId64之类的在inttypes.h中定义。

有谁规定 long long int 必须是 64 位么?

既然知道了类型是 long long int,直接用 lld 就可以了。

PRIdN 之类的宏,是专门给它们对应的 typedef 类型用的,因为同一个 typedef 类型,例如 int64_t,在不同实现中对应的实际类型可能是不一样的,所以才有了 inttypes.h 中的那些宏。但是在已知实际类型的情况下,就没有必要再去用它们了。

MMMIX 发表于 2016-08-16 15:41

回复 1# 18345093167


    程序都是错的(包含未定义行为),谈什么运行结果?

hellioncu 发表于 2016-08-16 16:50

MMMIX 发表于 2016-08-16 15:36 static/image/common/back.gif
有谁规定 long long int 必须是 64 位么?

既然知道了类型是 long long int,直接用 lld 就可以了。 ...

好像有些不支持lld,所以才需要PRId64此类的宏

evaspring 发表于 2016-08-16 17:07

回复 2# 王楠w_n


    不会就学啊 妹纸学前端 css javascript 很快的 有个编辑器和浏览器就行

18345093167 发表于 2016-08-16 17:18

程序的输出是10 2,程序本身没有错

18345093167 发表于 2016-08-16 18:17

#include写错了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 奇葩的输出