elecompu 发表于 2013-4-4 18:27:40

数据溢出问题。请教!

unsigned int Adc_Data_Test;
Adc_Data_Test=(Adc_Data*330)/255;//Adc_Data取值在0-255;
这里比较迷糊最终结果是不可能溢出的,中间值会溢出!这个数学运算在编译的时候会产生一个临时变量存放中间结果吗?决定这个临时变量是什么类型的因素是哪个?Adc_Data_Test这个值很小,不想弄个四字节数据存取。麻烦有兴趣的老师说两句!教教新人!谢谢!

lcw_swust 发表于 2013-4-4 19:07:41

这样写试试Adc_Data_Test=(unsigned long)Adc_Data*330/255;

elecompu 发表于 2013-4-4 19:34:56

谢谢,好使了,这是强制转换吗?C语言没系统学习过是不行!这两天买了本C语言书,好好翻番!

adongliu 发表于 2013-4-4 19:40:39

可以 Adc_Data_Test=(Adc_Data*66)/51

lcw_swust 发表于 2013-4-4 21:52:23

elecompu 发表于 2013-4-4 19:34 static/image/common/back.gif
谢谢,好使了,这是强制转换吗?C语言没系统学习过是不行!这两天买了本C语言书,好好翻番! ...

的确是强制转换,可以当作中间结果是放在Adc_Data中的

censtar 发表于 2013-4-4 21:58:38

旁观一下
页: [1]
查看完整版本: 数据溢出问题。请教!