+ -
当前位置:首页 → 问答吧 → Linux 下C编程的困惑, 求2^32

Linux 下C编程的困惑, 求2^32

时间:2010-09-05

来源:互联网

环境说明, ubuntu 10.04 amd64
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 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.

我照书上写了一个求X的N次方的小程序代码如下.
#include <stdio.h>
float chen(int x,int y)
{
        int i,z;
        for(i=1,z=x;i<y;i++)
                z=z*x;
        return z;
}
void main(void)
{
        printf("%.0f\n",chen(2,32));
}

求得2的32次方是0; 2的31次方是-2147483648.
我想请教一下前辈们.我要怎样求出比这更大的值了?比如,2的64方,圆周率的后的100位小数.....,请大家赐教,不胜感激.谢谢!

作者: yjdwbj_cu   发布时间: 2010-09-05

你试试定义的时候用long, 溢出了。

作者: 论坛ID   发布时间: 2010-09-05

http://bbs.chinaunix.net/post.ph ... =1779888&extra=
试过了一样,我的sizeof(long)=8,得 到2^32也是0

作者: yjdwbj_cu   发布时间: 2010-09-05

  1. %f
复制代码
是有问题的

作者: snriyt   发布时间: 2010-09-05

回复 yjdwbj_cu
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     long long int var = 2;
  5.     var <<= 31;
  6.     char * p = &var;
  7.     int i;

  8.     for (i = 0; i < 8; i++)
  9.         printf("%d ", *p++);
  10.     printf("\n");
  11.     printf("0x%04x", var);

  12.     return 0;
  13. }
复制代码
跑跑这个也许就明白了。
注意报警。

作者: 论坛ID   发布时间: 2010-09-05

本帖最后由 yjdwbj_cu 于 2010-09-05 15:43 编辑

回复 论坛ID


    能少许解说一下吗?我是初学者,报考自考<<计算机及其应用>>专科,要考<<高级程序设计一>>就是C语言.谢谢!

作者: yjdwbj_cu   发布时间: 2010-09-05

相关阅读 更多