a=100;
b=100;
c=100;
a,b,c都是unit8数值类型的,所求问题很简单,求a,b,c三个数的和
d=a+b+c;
d=255;
此处是因为加和溢出了,所以d是255,求不出a,b,c的和
e=double(a+b+c);
e=255;
其实这个操作相当于是:
d=a+b+c;
e=double(e);
所以是先没有和溢出,然后再强制类型转化的,所以这样操作是没有用的
正确的做法是:
aa=double(a);
bb=double(b);
cc=double(cc);
d=aa+bb+cc;
d=300;
先把每个数都强制转换成double类型的,再进行相加,就不会出现溢出的情况
总结:按照C语言的思维写matlab程序,很容易出现一些很难发现的bug,因为C语言是有自动转换数据类型这一说的。所以在以后写matlab程序的时候,一定要注意数值溢出问题。