在c语言中,int是用两个字节表示的,范围是-32768到+32767,超过这个范围的就不能表示了,只能用long int来表示。
从C语言的内部处理机制来说,int型数超出范围(溢出)被认为是一个正常现象,只会产生错误的计算结果或逻辑错误,而不会触发数据溢出的异常。因此,为了避免因为整数溢出而产生程序逻辑或计算错误,程序员必须自行检测可能出现的溢出或者确保不会出现数据溢出的情况。
C语言对于int类型数据超出范围的处理,只有一个最简单的原则:截断处理,即超出int位长度范围的高字节被自动截掉。
比如,假设int长度为16位的情况下,以下代码:
int a=0X77FFFFL /* 由于超出范围,高位的77将被自动截掉,实际的a将会等于0xFFFF */
++a /* a自增后,将超出范围,高位的1被截掉,实际a=0 */