#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++ 中的对象按照其生存期的特征可划分三类:
- 静态对象
包括:全局对象、函数内的 static 对象、类的 static 数据成员(C++ only)、字符串。静态对象的生存期是程序的整个运行期间。
- 自动对象
包括:auto 变量、register 变量以及函数参数。自动对象的生存期取决于其作用范围。每当程序执行到自动变量定义所在的块的时候,此自动变量被创建;程序执行超出了其作用范围后对象被销毁。
- 动态分配对象
指用 calloc、malloc 和 realloc 函数、或者 new 运算符(C++ only) 创建的对象。动态分配的对象的生存期起始于其建立的时刻,直到用 free 函数或者 delete 运算符(C++ only)销毁对象为止。
阅读(2326) | 评论(0) | 转发(0) |