定義一個二維數組 并初始化 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系列
|