标题:为什么没有越界
只看楼主
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
结帖率:100%
 问题点数:0 回复次数:8 
为什么没有越界
#include "stdio.h"
#include "time.h"
#include "conio.h"
void main()
{int star=time(NULL),end;
    getch();
    end=time(NULL);
    printf("%d\n",end-star);
    printf("%d\n%d",star,end);
}
计算从你开始运行这个程序到你按任意键的时间,
为什么不会越界,从现在到1970年一月一日起到现在的秒数好像已经越了int的界限了,为什么输出还是没有错。
搜索更多相关主题的帖子: include star 
2013-06-23 19:37
ddtet
Rank: 4
等 级:业余侠客
帖 子:32
专家分:211
注 册:2013-5-4
得分:0 
引用 limit.h,
#include <limits.h>
将 INT_MAX 印出来看看,每种系统给予 int 的最大值不见得总是一样。
有些比较大,甚至可以容纳到 203x 年的秒数。
2013-06-23 21:03
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
得分:0 
回复 2楼 ddtet
我不知道这个函数怎么用啊!可以贴出代码吗?我是初学者很多都不懂,谢谢啊!

加油加油!
2013-06-23 21:19
ddtet
Rank: 4
等 级:业余侠客
帖 子:32
专家分:211
注 册:2013-5-4
得分:0 
就很直白的用 printf 印出来,用肉眼去比大小。
不要被全大写吓到。
程序代码:
#include <stdio.h>
#include <time.h>
#include <limits.h>
int main() {
   int star=time(NULL);
   
   printf("%d\n", INT_MAX);
   printf("%d\n", star);
   
   return 0;
}


我在 Debian 上执行的结果是…
2147483647
1372029667
2013-06-24 07:22
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
得分:0 
回复 4楼 ddtet
那么书上说的int的范围是-32768到32767,是指什么的。是不是那个是以前的还是???

加油加油!
2013-06-24 09:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
那么书上说的int的范围是-32768到32767
--- 烂书害人
2013-06-24 10:19
q13678986740
Rank: 4
等 级:业余侠客
帖 子:114
专家分:245
注 册:2012-7-7
得分:0 
int型4字节共32位,包括负数总长度2^32
2013-06-24 23:31
ddtet
Rank: 4
等 级:业余侠客
帖 子:32
专家分:211
注 册:2013-5-4
得分:0 
不同时代的主机,或是不同的用途的机器,会有不同的配置。

早前的计算机才 128 KB 甚至更小的 RAM,当然 int 越小能够放越多的变量。
而现在 4 GB 以上的新 NB 到处都是,当然可以让 int 变大一些,
让撰写程式的人少面对变量空间不足的机会。

但是对于 Android iPhone 这种相对 RAM 较小的装置,就可能会一些限制。

如楼上所说的,只有正负 30000 多的变量,可用性不高。
随便用来记录商家进出金额,就不够用了。
int 的大小是与时代一起演进的,不能要求数年前的书,有预见的能力。
(其它的变量型态也是一样)

一般给 PC 使用的程式语言 int 已经是 32 bit(4 bytes)了,
甚至有一些还多一倍,到 64 bit,用来记录 1970 到我有生之年的秒数都够。

看到 32, 64 两个数字有些眼熟吧!因为变量的大小,也程 CPU 处理资料的能力有关。

我也只是知道一个大概,大约知道除了时间(秒数)或是持续累加的东西(如流水号),
一般用途 int 通常不会爆掉而已,没有力去穷尽这方面的知识。

其它资讯…
如果楼主未来有机会处理到颜色,ARGB(Alpha, Red, Green, Blue)色码,
因为各占 8 bit(0~255),所以要用无正负号的方式使用 int。
2013-06-25 00:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-415876-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.173960 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved