定义一个二维数组 并初始化 unsigned char A[11][12]={0};定义一个 unsigned long int T=0;
其中A数组每个元素 只赋值0到9之间
执行以下运算后 T=A[1][0]*10000+A[1][1]*1000+A[1][2]*100+A[1][3]*10+A[1][4];
T的范围应该在0到99999之间
但是实际结果T的值却只能在 0到65535之间 这是为什么,若A[1][0]>6,整个数据就乱了
但如果T的表达式 做成下面这样
T=A[1][0]*10000;
T= T+A[1][1]*1000+A[1][2]*100+A[1][3]*10+A[1][4];
实际结果T的值就能在 0到99999之间
若是将数组 定义成 unsigned long int 型
执行以下运算后 T=A[1][0]*10000+A[1][1]*1000++A[1][2]*100+A[1][3]*10+A[1][4];
实际结果T的值也能在 0到99999之间
请问大神们 这是什么缘故 ,单片机是使用STC15F2K系列
|