错在哪 里??

freedwind 2004-04-16 10:18:46
#include <stdio.h>

long sign(int bit);


/* 打印各类型取值范围 版本2 */

main()
{
int lo; /* 定义: lo = long */

lo = 32; /* 各类型的位数 */




printf ("signed long的取值范围 %ld---%ld\n",sign(lo),sign(lo)-1);

return 0;
}
/* sign 函数:计算2的n-1次方,并返回其数值 */
long sign(int bit)
{
int i, u;
u = 2;

for (i = 2; i <= bit - 1; ++i)
u = u * 2;
return u;
}
为什么输出为 0 -- -1。错在哪 里,请各位帮忙修改一下!!
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nobush 2004-04-16
  • 打赏
  • 举报
回复
因为int类的 n会溢出,算不到2 的32 次方
moswawa 2004-04-16
  • 打赏
  • 举报
回复
long sign(int bit)
{
int i;
long u;
u = 2;

for (i = 2; i <= bit - 1; ++i)
u = u * 2;
return u;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧