主题:[讨论]C语言 整数问题
jasonlee56
[专家分:0] 发布于 2010-03-24 15:50:00
如果我输入程序:
#include "stdio.h"
void main()
{
int x, y, z;
x=99999999;
y=104;
z=97909;
printf("%d %d %d", x, y, z);
}
编译时会提示我超出范围,结果显示为:
-7937 104 32373
但是如果程序改为:
#include "stdio.h"
void main()
{
int x, y, z;
x=999;
y=104;
z=979;
printf("%d %d %d", x, y, z);
}
输出正常
如果我想正常输出第一段代码里的长整数,怎么修改?
谢谢各位了!
回复列表 (共9个回复)
沙发
liudan319 [专家分:3780] 发布于 2010-03-24 16:11:00
long x,y,z;
int占四个字节,-65535---65535
printf("%l%l%l",x,y,z);
板凳
jasonlee56 [专家分:0] 发布于 2010-03-24 16:50:00
非常感谢!
最后输出语句好像应该是: printf("%ld %ld %ld", x, y, z);
anyway, thanks a lot!
3 楼
871238343 [专家分:10] 发布于 2010-03-25 15:44:00
liu dan 大大,这么容易就挣了20分
4 楼
liudan319 [专家分:3780] 发布于 2010-03-25 18:09:00
[quote]liu dan 大大,这么容易就挣了20分[/quote]
我都变成大大了……
5 楼
sidtoy [专家分:170] 发布于 2010-03-26 14:23:00
lz多看看语言的书吧,先把语言打扎实,另外您的代码要符合 ansi 标准还要修改不少,比如对头文件的包含的写法已经 main 的显式返回,以及对字面值的写法等。
int 在 x86 的 32 位系统上,一般是 32 bit,或者 4 字节(如果采用每字节 8 bit 的模式)。一般对 int 的规定是计算机处理起来最自然的长度,也即其外部数据总线的宽度。
6 楼
sxm227 [专家分:10] 发布于 2010-04-22 10:06:00
深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询
7 楼
yp460390673 [专家分:0] 发布于 2010-04-22 22:24:00
貌似整型表示的范围有限
超过了就是随即的数字
8 楼
雪光风剑 [专家分:27190] 发布于 2010-04-23 00:34:00
[quote]貌似整型表示的范围有限
超过了就是随即的数字[/quote]
不是随机的,是对你输入的数字在范围内取模的结果
比如对于老int,你写65537,得到的结果就是1
liudan昏头了,居然说int范围是正负65535……老int(TC)是-32768~32767,sizeof是2
新int(VC,VS,dev c++。。。)是2147483647~-2147483648,sizeof是4
我来回复