鱼C论坛

 找回密码
 立即注册
查看: 2959|回复: 9

整形与长整形!

[复制链接]
发表于 2012-7-24 17:32:15 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
void main()
{
int a;
printf("input a number\n");
scanf("%d",&a);
printf("%ld",a);
}

整形范围是-32768~32768
长整形  是-2147483648~2147483647
我输入的整形,也就是说,超过32768就应该溢出,但实际上是超过2147483647才溢出,怎么解释?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-24 18:54:06 | 显示全部楼层
32位计算机的int 类型是4个字节,就是32位,所以范围是-2147483648~2147483647
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-24 22:55:54 | 显示全部楼层
对于类型长度 用 sizeof(type)先测一下。

可移植的程序会通过宏定义自己的类型,而不用提供的类型,可以保证长度的有效性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 11:13:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 11:35:45 | 显示全部楼层
毒﹉ 发表于 2012-7-25 11:13
我是64位的计算机,用sizeof测试也同样是4个字符。


嗯,我是32位机,遇到这种问题可以查MSDN 上面直接有答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 13:28:06 | 显示全部楼层
怎么解释 呵呵 你看到 书说错了呗
数据类型的内存长度 C语言只要求
像 int大于等于short
long 大于或等于int 等等这样的情况
int具体是占几个字节 看具体编译器的怎么实现的
所以 int 本来就不能说范围是 -32768~32768
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 13:28:58 | 显示全部楼层
He2toN 发表于 2012-7-24 18:54
32位计算机的int 类型是4个字节,就是32位,所以范围是-2147483648~2147483647

32位机上面的 wintc 里面 你sizeof(int) 一样是一个2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 21:38:45 | 显示全部楼层
现在的编译器一般情况下,int和long是相同的,只有long long会更长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 09:05:30 | 显示全部楼层
在vc++6.0中是int是4个字节,long是8个字节,float是四个字节。double是8个字节 啊。一般自己在自己机器上的编译器测试下就知道了,用宏sizeof就都知道了。跟编译器有关的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 14:15:10 | 显示全部楼层
不同的编辑器int的长度是不一样的
在16位的编辑器上int是-32768~32768也就是2字节
在32位的编辑器上int是-2147483648~2147483647也就是4字节
现在多数的编辑器都是32位的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 08:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表