long long 型的数 显示不正确的问题
=。= 很奇怪的一个问题,将一个long long型的数0赋值给long long的数a,
然后a++
然后如果以%llu格式print出来的时候会显示是1,
以%lld格式print出来的时候会显示是0,
这是肿么个一回事咧...是我的编译器有问题么?
本帖最后由 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;
}
为了15分
oggplay 发表于 2014-5-9 14:57 static/image/common/back.gif
为了15分
=.= 我就是想知道为啥有的编译器给出的结果是0... ssfoxs_ss 发表于 2014-5-9 16:32 static/image/common/back.gif
=.= 我就是想知道为啥有的编译器给出的结果是0...
因为你的编译器不支持C99标准,只能说这么多了 long long 这玩意是C99标准下的 如果你是VC++6.0 估计编译都不会通过
得看你的编译器是否完全支持C99标准
PS:现在最新C11标准 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的版本了 oggplay 发表于 2014-5-9 13:59 static/image/common/back.gif
编译时必须加-std=c99选项,你的默认的是c89标准。https://gcc.gnu.org/c99status.html
对别的编译器可以用 ...
解决啦~~太感谢啦~~ 又学到新知识了...
页:
[1]