问题1:MDU32是否只支持"volatile unsigned long int"或"volatile long int"之间的运算?
例:volatile unsigned long int a = 123456;
volatile unsigned long int b = a * 100000;
此时b的运算(乘以一个固定的系数而非变量)是否会调用MDU32?
问题2:"volatile unsigned long int"与"volatile unsigned long"及"volatile long int"与"volatile long"的区别是什么?
问题3:MDU32的除法是否同普通整数除法一样,不计余数?
问题1:MDU32是否只支持"volatile unsigned long int"或"volatile long int"之间的运算?
MDU32是STC32系列中用于加速乘法和除法运算的硬件模块。其设计支持的是32位整数运算,包括无符号(unsigned)和有符号(signed)类型。因此,MDU32并不局限于“volatile unsigned long int”或“volatile long int”之间的运算,而是可以处理所有符合其数据宽度的整数类型。
问题2:"volatile unsigned long int"与"volatile unsigned long"及"volatile long int"与"volatile long"的区别是什么?
在C语言中,long int与long、unsigned long int与unsigned long是等价的写法,它们在语法上并无区别,只是书写习惯不同。例如:
volatile unsigned long int 等同于 volatile unsigned long
volatile long int 等同于 volatile long