Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367326
  • 博文数量: 46
  • 博客积分: 3277
  • 博客等级: 中校
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-24 19:03
文章分类

全部博文(46)

文章存档

2008年(3)

2007年(7)

2006年(36)

我的朋友

分类: C/C++

2007-01-10 09:29:21

#include
int is_overflow_add_for_unsigned_int( unsigned int a, unsigned int b )
{
  return UINT_MAX - a < b;
}
int is_overflow_add_for_signed_int( int a, int b )
{
  return a >= 0 ? INT_MAX - a < b : INT_MIN - a > b;
}
int is_overflow_multiply_for_unsigned_int( unsigned int a, unsigned int b )
{
  return a == 0 ? 0 : UINT_MAX / a < b;
}
int is_overflow_multiply_for_signed_int( int a, int b )
{
  return a == 0 ? 0 :
    a > 0 && b > 0 || a < 0 && b < 0 ? INT_MAX / a < b : INT_MIN / a > b;
}
 
C/C++ 中的对象按照其生存期的特征可划分三类:
  1. 静态对象
    包括:全局对象、函数内的 static 对象、类的 static 数据成员(C++ only)、字符串。静态对象的生存期是程序的整个运行期间。
  2. 自动对象
    包括:auto 变量、register 变量以及函数参数。自动对象的生存期取决于其作用范围。每当程序执行到自动变量定义所在的块的时候,此自动变量被创建;程序执行超出了其作用范围后对象被销毁。
  3. 动态分配对象
    指用 calloc、malloc 和 realloc 函数、或者 new 运算符(C++ only) 创建的对象。动态分配的对象的生存期起始于其建立的时刻,直到用 free 函数或者 delete 运算符(C++ only)销毁对象为止。
阅读(2326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~