欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 對兩個C語言INT變量進行加減乘除操作請教下使用8位單片機怎么 [打印本頁]

作者: erwtr    時間: 2022-2-26 14:44
標題: 對兩個C語言INT變量進行加減乘除操作請教下使用8位單片機怎么
我使用的是STC12C5A60S2單片機,我想實現求3個數組的平均值,數組和變量的類型全是int型,部分代碼如下:
int x[2]={-30000,30000};
int y[2]={-30000,30000};
int z[2]={-30000,30000};

經過下一段程序XYZ數組里面會被賦值,先不管賦值的溢出,默認不溢出。進行下面的程序:
X_OFFSET=(x[0]+x[1])/2;
Y_OFFSET=(y[0]+y[1])/2;
Z_OFFSET=(z[0]+z[1])/2;

結果我使用串口調試助手發出來發現數據不對,想請教一下,這段代碼(求平均值的)應該怎么取處理它。

作者: percy    時間: 2022-2-26 20:21
首先你應描述數據是怎么個不對法。再一個確認出錯不是因為int溢出?
作者: rundstedt    時間: 2022-2-26 23:09
那么串口助手發出來的數據又是什么呢?
作者: 兩儀式    時間: 2022-2-27 00:02
找個在線平臺用純C驗證下看看
作者: wulin    時間: 2022-2-27 10:35
樓主根據串口調試助手發出數據不對,就說是數組里面會被重新賦值是沒有證據的。用Keil走單步查看數組就一目了然了。
作者: erwtr    時間: 2022-2-27 12:09
我現在把關于Z數組的賦值句段給注釋掉了,現在直接用初值計算,現在是-25000+5000,這個對于int來說肯定不會溢出把,但是串口調試助手的結果看起來,是D9 F0,請看圖片,輸出的就是那兩個字節,我算了一下是-23024,所以這樣處理有問題,照理說應該是-10000的

c790f12016933a7d0e504f991a588bf.png (33.69 KB, 下載次數: 25)

c790f12016933a7d0e504f991a588bf.png

534d0ed8d2a4a9cf110c83f77f9eccb.png (3.68 KB, 下載次數: 39)

534d0ed8d2a4a9cf110c83f77f9eccb.png

7365bd4e2a9c0ad1cd2c1a53e3d1bc2.png (1.66 KB, 下載次數: 39)

7365bd4e2a9c0ad1cd2c1a53e3d1bc2.png

c790f12016933a7d0e504f991a588bf.png (33.69 KB, 下載次數: 19)

串口助手結果

串口助手結果

534d0ed8d2a4a9cf110c83f77f9eccb.png (3.68 KB, 下載次數: 25)

把Z賦值的句段注釋掉了

把Z賦值的句段注釋掉了

7365bd4e2a9c0ad1cd2c1a53e3d1bc2.png (1.66 KB, 下載次數: 40)

改變了Z的初值

改變了Z的初值

作者: erwtr    時間: 2022-2-27 12:10
發表于 2022-2-26 23:09
那么串口助手發出來的數據又是什么呢?

請看一下我后面的回復,我回復現在還在審核
作者: erwtr    時間: 2022-2-27 12:10
percy 發表于 2022-2-26 20:21
首先你應描述數據是怎么個不對法。再一個確認出錯不是因為int溢出?

請看一下我后面的回復,現在正在審核
作者: TEC    時間: 2022-2-27 15:37
erwtr 發表于 2022-2-27 12:09
我現在把關于Z數組的賦值句段給注釋掉了,現在直接用初值計算,現在是-25000+5000,這個對于int來說肯定不 ...

最好把代碼貼全一點,比如你定義的數據類型,Send_int_Data函數的定義方式等,這樣更方便分析。
作者: rundstedt    時間: 2022-2-27 16:50
正確答案是D8F0,你輸出了D9F0,差了一位,應該不是計算錯誤,可能是輸出有什么問題。
作者: yzwzfyz    時間: 2022-2-28 15:55
圖中每個字節表示的數是什么呢?哪個是X0?Z1?……




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1