ssfoxs_ss 发表于 2014-5-9 13:59:21

long long 型的数 显示不正确的问题

=。= 很奇怪的一个问题,
将一个long long型的数0赋值给long long的数a,
然后a++
然后如果以%llu格式print出来的时候会显示是1,
以%lld格式print出来的时候会显示是0,
这是肿么个一回事咧...是我的编译器有问题么?

oggplay 发表于 2014-5-9 13:59:22

本帖最后由 oggplay 于 2014-5-13 10:33 编辑

编译时必须加-std=c99选项,你的默认的是c89标准。https://gcc.gnu.org/c99status.html
对别的编译器可以用这个程序检测一下是否支持C99(但不代表完全支持C99标准):
#include<stdio.h>
int main()
{
#if (!defined(__STDC__))
printf("非标准C!");
#elif defined(__STDC_VERSION__)
printf("标准C版本:%ld。", __STDC_VERSION__);
#else
printf("旧的标准C。");
#endif
getchar();
return 0;
}

oggplay 发表于 2014-5-9 14:57:09

为了15分

ssfoxs_ss 发表于 2014-5-9 16:32:52

oggplay 发表于 2014-5-9 14:57 static/image/common/back.gif
为了15分

=.= 我就是想知道为啥有的编译器给出的结果是0...

oggplay 发表于 2014-5-9 21:13:25

ssfoxs_ss 发表于 2014-5-9 16:32 static/image/common/back.gif
=.= 我就是想知道为啥有的编译器给出的结果是0...

因为你的编译器不支持C99标准,只能说这么多了

牡丹花下死做鬼 发表于 2014-5-10 18:19:21

long long 这玩意是C99标准下的 如果你是VC++6.0 估计编译都不会通过
得看你的编译器是否完全支持C99标准

PS:现在最新C11标准

ssfoxs_ss 发表于 2014-5-13 08:42:18

oggplay 发表于 2014-5-9 21:13 static/image/common/back.gif
因为你的编译器不支持C99标准,只能说这么多了

> ./m
stardard C
199901
>gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

=.= 肿么个看我的gcc都是支持C99的...都4.2.1的版本了

ssfoxs_ss 发表于 2014-5-13 11:10:20

oggplay 发表于 2014-5-9 13:59 static/image/common/back.gif
编译时必须加-std=c99选项,你的默认的是c89标准。https://gcc.gnu.org/c99status.html
对别的编译器可以用 ...

解决啦~~太感谢啦~~ 又学到新知识了...
页: [1]
查看完整版本: long long 型的数 显示不正确的问题