QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1970|回复: 4

问一个关于long int和int比较大小的问题

[复制链接]
发表于 2005-11-28 15:43:12 | 显示全部楼层 |阅读模式
一个函数,如下
int
j_readline(jio *fh, char *line, off_t buffer_size)
{
        /* non-static shit. */
        char *pnt = NULL, *ptr = NULL;
        char *pnt2 = NULL;
        off_t size, len, zero = 0;
        g_print ("buffer_size - zero = %d, %d.\n",buffer_size - zero, buffer_siz
e < zero);
        ........以后省略
}

我在别处这样调用
fhd->readline(fhd, buf, J_SIZEBIG)
其中
#define J_SIZEBIG  512


程序执行的结果是:
buffer_size - zero = 512, -1212962092.

非常不解,怎么两个出现那样一个负值????

请教大虾们
发表于 2005-11-28 16:11:06 | 显示全部楼层
[code:1]
#include <stdio.h>

main()
{
    printf("%d\n",0x7fffffff);
    printf("%d\n",0x7fffffff+1);
}

[/code:1]
看看结果就知道了。
回复

使用道具 举报

 楼主| 发表于 2005-11-28 16:42:01 | 显示全部楼层
大虾方便的话就讲一下原因哈
回复

使用道具 举报

发表于 2005-11-28 20:35:09 | 显示全部楼层
32位有符号整数里0x80000000到0xffffffff是用来表达负值。
你既然是用来表达size的就用unsigned long类型。打印时用%u
回复

使用道具 举报

 楼主| 发表于 2005-11-28 22:27:32 | 显示全部楼层
多谢楼上,我消化一下看看
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-3 02:15 , Processed in 0.033915 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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