关于c语言字长范围

tyg1982 2005-10-12 04:20:33
#include <stdio.h>

int main()
{
int a,b; //(int型的范围:-32767~32768)
~~~
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
system("pause");
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dev c++中编译通过,得到b的值为+32768!!!!
int的范围为-32767~+32768,按道理b的值应该溢出(-32768)
是不是dev c++和turboc的int字长不同????

...全文
167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyg1982 2005-10-12
  • 打赏
  • 举报
回复
结贴,感谢各位!!!!!
tyg1982 2005-10-12
  • 打赏
  • 举报
回复
OK,调试成功,把b换成short int 型后满足要求。
xiaocai0001 2005-10-12
  • 打赏
  • 举报
回复
回复人: doway(john) ( ) 信誉:100 2005-10-12 16:27:00 得分: 0


目前 int 大都是 4 字节,取值范围是正负 20 多亿。
------------------
支持


ANSI 标准定义的整数类型
类型 比特数 范围
[signed]int 16(2个字节) -32768~32768
Unsigned int 16(2个字节) 0~65535
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二楼的范围看错了,呵呵
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----------------------------------------
这只是一个标准 , 但大多数编译器已经将int 型做为4个字节来处理了.
要知道大多数编译器是同时做C, C++编译工作的.
所以应该如doway(john)所说

不过turboC的int型还是2字节的.要想在Dev C++下得到你期望的结果, 可以将int改成short int
就能得到你的结果了.
wohow 2005-10-12
  • 打赏
  • 举报
回复
因为0的符号位是0,占用了正数中的一个,所以char,short,int,long等范围总是正数比负数的绝对值少1。
tyg1982 2005-10-12
  • 打赏
  • 举报
回复
我看错了,感谢二楼的
tyg1982 2005-10-12
  • 打赏
  • 举报
回复
ANSI 标准定义的整数类型
类型 比特数 范围
[signed]int 16(2个字节) -32768~32768
Unsigned int 16(2个字节) 0~65535
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二楼的范围看错了,呵呵
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tyg1982 2005-10-12
  • 打赏
  • 举报
回复
打错了,抱歉
是-32767~32768
doway 2005-10-12
  • 打赏
  • 举报
回复
目前 int 大都是 4 字节,取值范围是正负 20 多亿。
wohow 2005-10-12
  • 打赏
  • 举报
回复
只见过范围-32768~32767,没有见过-32767~32768这样的范围。
dev c++中看看sizeof(int)是多少就行了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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