C语言数据溢出问题
今天遇到一个关于数据溢出的问题。先贴出代码
编译环境vs2008,short int的是2字节,按照公式计算,short int 能表示最大的正数是32767(2^15-1),看第五行代码a=a+b;调试到该行代码时,a已经变成了-2了(见图一),很明显a已经溢出了,但是最后结果却能得出正确的答案(见图二)。求大婶
图一

图二

#include <stdio.h>
int main(void)
{
short int a=32767,b=32767,c;
a=a+b; //下面三行代码是实现两数交换的功能
b=a-b;
a=a-b;
c=sizeof(short int);
printf("a=%d,b=%d\n",a,b);
printf("sizeof=%d",c);
return 0;
}编译环境vs2008,short int的是2字节,按照公式计算,short int 能表示最大的正数是32767(2^15-1),看第五行代码a=a+b;调试到该行代码时,a已经变成了-2了(见图一),很明显a已经溢出了,但是最后结果却能得出正确的答案(见图二)。求大婶
图一

图二

...全文
相关推荐
浅谈C语言程序设计中的溢出问题.pdf
浅谈C语言程序设计中的溢出问题.pdf
嵌入式C语言中数据溢出的常见的问题与危险
数据溢出(Data Overflow)是指在计算机程序中,尝试将一个数值存储到变量中时,该数值超出了变量所能表示的范围。简单来说,就是当一个操作的结果超过了变量的数据类型能够存储的最大值或最小值时,发生的溢出现象。数据溢出是嵌入式开发中一个不可忽视的问题,它可能导致程序崩溃、计算错误甚至安全漏洞。在进行算术运算之前,检查数值是否超出了目标变量的范围。使用更大的数据类型(如int32_t代替int8_t)来降低溢出的风险。配置编译器选项(如GCC的)以增加溢出检测。
c代码-1.3整型数据的溢出
c代码-1.3整型数据的溢出
数据结构(C语言版)中,舞伴问题
数据结构(C语言版)中,队列的应用问题,用两个循环队列实现舞伴问题。
深入解析C语言中常数的数据类型
C语言中常数的数据类型,需要的朋友可以过来参考下。希望对大家有所帮助


