偶刚学vc,在int数据类型的描述中说它的表示范围是-32768---32767,但为什么

sayto 2001-10-15 10:56:52
#include <stdio.h>

void main()
{
int a= 945930348;
printf("%d\n",a);
}
显示的结果是945930348,它已经超出了-32768---32767这个范围了?
...全文
391 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
asm386 2001-10-15
  • 打赏
  • 举报
回复
请使用 windows 提供的 BYTE,WORD,DWORD... 等。
不要使用 c 提供的与平台无关的 int, long ...。
因为 c 提供的 int 在 16 位机器上是 16位,在 32 位机器上是 32位,在 64 位机器上是 64位。
你应该了解一下语言与操作系统提供的开发平台的关系。
语言懂得再深,也便写不出相关平台的优秀软件。如:windows 程序或 unix 程序。
fishskin 2001-10-15
  • 打赏
  • 举报
回复
在VC中,int型变量是4个字节的,所以保留一个符号位,它的范围是正负2的31次方,你看到的int范围是-32768---32767是因为在C中,int变量占2个字节,保留符号位,范围是正负2的15次方,即-32768---32767,仔细想一想就明白了。
rightyeah 2001-10-15
  • 打赏
  • 举报
回复
其实就是一个字长的问题,新的cpu多用32位的寄存器,甚至64位寄存器,相应的OS也越来越多地支持32位甚至64位字长的处理。比如windows系统,现在的win95/98/nt/2k都是32位系统,那么它默认的存储单位就是32位(也就是4个字节),那么一个int变量也顺理成章地变成32位,取值范围是-2^31 to 2^31 -1
sayto 2001-10-15
  • 打赏
  • 举报
回复
明白了。
但什么是16位的?
wmouse 2001-10-15
  • 打赏
  • 举报
回复
这是和编译环境有关的,如果16位就是-32768---32767,如果32位就是-2,147,483,648 to 2,147,483,647

16,545

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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

手机看
关注公众号

关注公众号

客服 返回
顶部