找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2403|回復(fù): 10
收起左側(cè)

對兩個C語言INT變量進行加減乘除操作請教下使用8位單片機怎么

[復(fù)制鏈接]
ID:440814 發(fā)表于 2022-2-26 14:44 | 顯示全部樓層 |閱讀模式
我使用的是STC12C5A60S2單片機,我想實現(xiàn)求3個數(shù)組的平均值,數(shù)組和變量的類型全是int型,部分代碼如下:
int x[2]={-30000,30000};
int y[2]={-30000,30000};
int z[2]={-30000,30000};

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

結(jié)果我使用串口調(diào)試助手發(fā)出來發(fā)現(xiàn)數(shù)據(jù)不對,想請教一下,這段代碼(求平均值的)應(yīng)該怎么取處理它。
回復(fù)

使用道具 舉報

ID:1006852 發(fā)表于 2022-2-26 20:21 | 顯示全部樓層
首先你應(yīng)描述數(shù)據(jù)是怎么個不對法。再一個確認(rèn)出錯不是因為int溢出?
回復(fù)

使用道具 舉報

ID:879809 發(fā)表于 2022-2-26 23:09 | 顯示全部樓層
那么串口助手發(fā)出來的數(shù)據(jù)又是什么呢?
回復(fù)

使用道具 舉報

ID:440403 發(fā)表于 2022-2-27 00:02 | 顯示全部樓層
找個在線平臺用純C驗證下看看
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2022-2-27 10:35 | 顯示全部樓層
樓主根據(jù)串口調(diào)試助手發(fā)出數(shù)據(jù)不對,就說是數(shù)組里面會被重新賦值是沒有證據(jù)的。用Keil走單步查看數(shù)組就一目了然了。
回復(fù)

使用道具 舉報

ID:440814 發(fā)表于 2022-2-27 12:09 | 顯示全部樓層
我現(xiàn)在把關(guān)于Z數(shù)組的賦值句段給注釋掉了,現(xiàn)在直接用初值計算,現(xiàn)在是-25000+5000,這個對于int來說肯定不會溢出把,但是串口調(diào)試助手的結(jié)果看起來,是D9 F0,請看圖片,輸出的就是那兩個字節(jié),我算了一下是-23024,所以這樣處理有問題,照理說應(yīng)該是-10000的
c790f12016933a7d0e504f991a588bf.png
534d0ed8d2a4a9cf110c83f77f9eccb.png
7365bd4e2a9c0ad1cd2c1a53e3d1bc2.png

串口助手結(jié)果

串口助手結(jié)果

把Z賦值的句段注釋掉了

把Z賦值的句段注釋掉了

改變了Z的初值

改變了Z的初值
回復(fù)

使用道具 舉報

ID:440814 發(fā)表于 2022-2-27 12:10 | 顯示全部樓層
發(fā)表于 2022-2-26 23:09
那么串口助手發(fā)出來的數(shù)據(jù)又是什么呢?

請看一下我后面的回復(fù),我回復(fù)現(xiàn)在還在審核
回復(fù)

使用道具 舉報

ID:440814 發(fā)表于 2022-2-27 12:10 | 顯示全部樓層
percy 發(fā)表于 2022-2-26 20:21
首先你應(yīng)描述數(shù)據(jù)是怎么個不對法。再一個確認(rèn)出錯不是因為int溢出?

請看一下我后面的回復(fù),現(xiàn)在正在審核
回復(fù)

使用道具 舉報

ID:625730 發(fā)表于 2022-2-27 15:37 | 顯示全部樓層
erwtr 發(fā)表于 2022-2-27 12:09
我現(xiàn)在把關(guān)于Z數(shù)組的賦值句段給注釋掉了,現(xiàn)在直接用初值計算,現(xiàn)在是-25000+5000,這個對于int來說肯定不 ...

最好把代碼貼全一點,比如你定義的數(shù)據(jù)類型,Send_int_Data函數(shù)的定義方式等,這樣更方便分析。
回復(fù)

使用道具 舉報

ID:879809 發(fā)表于 2022-2-27 16:50 | 顯示全部樓層
正確答案是D8F0,你輸出了D9F0,差了一位,應(yīng)該不是計算錯誤,可能是輸出有什么問題。
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2022-2-28 15:55 | 顯示全部樓層
圖中每個字節(jié)表示的數(shù)是什么呢?哪個是X0?Z1?……
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表