[問題]陣列比較及型態轉換疑問

看板C_and_CPP作者 (‵皿′)時間8年前 (2015/12/11 15:21), 8年前編輯推噓7(7022)
留言29則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Keil uVision5 C51 問題(Question): 板上先進們好,遇到一些問題,請各位幫忙,謝謝 1. 我有個模組是用浮點數做為函數的宣告,函數型式如下 float Data_read() 我想要將讀出來的數值轉換成ASCII,我直接轉成int做輸出 程式可以編譯成功,但是實體上就無法正常運行 請問是我轉換的過程有錯誤? 2. 如果讀出某段數值是先丟入array,我要將讀到的數值做比較 可以直接用數字做比較還是需要用兩個array做比較呢? 程式碼(Code):(請善用置底文網頁, 記得排版) 1.float -> ASCII http://ideone.com/5m4hc5 2.array比較 http://ideone.com/yhUbSy -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.109.170.21 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449818479.A.67B.html

12/11 18:03, , 1F
unsigned char最大也只到255,你除以1000當然會出錯啊
12/11 18:03, 1F
sorry,沒注意到區間

12/11 18:22, , 2F
第二個是在問什麼,怎麼有看沒懂
12/11 18:22, 2F
讀取數值的原型態,先將數值讀進array Data_read(unsigned char data[5]) 我要將讀取到的data[5]和某a[2]裡面的數值做比較 ex: data[2]->裡面是30、a[2]->裡面是25 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 18:34:25

12/11 19:01, , 3F
data[2]==a[2] ?
12/11 19:01, 3F
不一樣,這是兩個變數陣列 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 20:33:39

12/11 20:42, , 4F
你是要比較整個陣列,還是比較陣列裡面的某兩個元素?
12/11 20:42, 4F
比較陣列某幾個元素 ※ 編輯: andy79323 (120.109.170.21), 12/11/2015 21:26:09

12/11 22:06, , 5F
我猜你是想要比較"data[]整個陣列代表的數"
12/11 22:06, 5F

12/11 22:07, , 6F
和"a[]陣列的某個元素"?
12/11 22:07, 6F
是的,差不多是這意思 data[5]-> 我只要取data[2]、data[0]出來做比較 a[2]->欲比較的數值,例如:a[2]={20,25}; 我上網查過陣列不能直接跟陣列做比較,請問先進們有比較好的方式可以處理? ※ 編輯: andy79323 (120.109.182.133), 12/11/2015 22:33:42

12/11 23:04, , 7F
想用union....但是data[]取的不連續...
12/11 23:04, 7F

12/11 23:09, , 8F
data[2]==a[0], data[2]==a[1]?
12/11 23:09, 8F

12/11 23:28, , 9F
還是看不懂你第二題的意思 你想比較甚麼元素 就指定該
12/11 23:28, 9F

12/11 23:28, , 10F
兩個元素去作比較就對了 依需求可以用雙重迴圈
12/11 23:28, 10F

12/11 23:30, , 11F
另外int b[2]={30,20};只有b[0],b[1]兩個元素 沒有b[2]
12/11 23:30, 11F
a[2]->這個是放欲比較的數值,可以不用設陣列,這可有可無 data[5]->會取data[2]、data[0]這是因為要取特殊的數據用 第一個問題我設為 unsigned short int 功能也是讀不到 ※ 編輯: andy79323 (120.109.182.133), 12/12/2015 00:57:42

12/12 04:25, , 12F
第一題想到一種可能性...沒有加一個NULL當作結束位元?
12/12 04:25, 12F
第一個問題,我用同樣的方式做轉換,是可以正常傳送轉換後的數據 http://imgur.com/wbq9NwU

12/12 04:56, , 13F
我覺得…先學好國文…囧…真的看不懂你想表達什麼
12/12 04:56, 13F
sorry,表達的可能不是很清楚 副程式長得有點像這樣 應該說我的問題在模組讀取完數值放入的array->稱作a 跟我要比較的數值->稱作b 'a和b的比較過程'->我的問題處,陣列的比較不能直接這樣做,我不太懂這怎麼處理@@ http://imgur.com/l5NRKDY
※ 編輯: andy79323 (120.109.182.133), 12/12/2015 09:27:34

12/12 09:36, , 14F
所以你看到dh的值是…?
12/12 09:36, 14F

12/12 09:38, , 15F
需求是:只要取data[2]、data[0]出來做比較
12/12 09:38, 15F

12/12 09:40, , 16F
這樣的話unsigned int tmp = (dh[2] << 8) | dh[0]
12/12 09:40, 16F

12/12 09:40, , 17F
組合成一個int後再拿來比較?
12/12 09:40, 17F
這個是模組的原型 bit Data_read(unsigned char data[5]) U8temp = (data[0] + data[1] + data[2] + data[3]); if (data[4] == (data[0] + data[1] + data[2] + data[3])) { return 1; } 從data[5]裡面讀到的數->抓取data[0]、data[2]出來和上面圖片中的dcc[2]做比較 data[5]=dh[5]->dh裡面放的是上面讀取的數據 是的,要先組合成一個int,再來和dcc[2]的數值比較 ※ 編輯: andy79323 (120.109.170.21), 12/12/2015 11:50:27

12/12 12:30, , 18F
先把權重大的部分放進一個 int 裡面,然後左移這個 int,再
12/12 12:30, 18F

12/12 12:31, , 19F
把權重小的部分放也進去,組成一個完整的 int
12/12 12:31, 19F

12/12 12:31, , 20F
int 被拆成好幾段的話也是重複這個步驟
12/12 12:31, 20F

12/12 13:11, , 21F
data是一個array,data[5]是一個int,你一直說data[5],
12/12 13:11, 21F

12/12 13:11, , 22F
我以為你要比一個不存在的資料
12/12 13:11, 22F

12/12 13:13, , 23F
你圖片84行與90行沒甚麼問題(除了char轉int)
12/12 13:13, 23F

12/12 13:15, , 24F
乾脆直接dh[0]>dcc[0], dh[0]<dcc[1], dh[2]>dcc[0],
12/12 13:15, 24F

12/12 13:16, , 25F
dh[2]<dcc[1]這樣比較,但你要小心==的時候
12/12 13:16, 25F
好像也是不行 http://imgur.com/2zn9LEg
※ 編輯: andy79323 (120.109.170.21), 12/12/2015 14:17:35

12/12 15:03, , 26F
... [重要] 發文前務必閱讀:常見問題十三誡 第2點
12/12 15:03, 26F
我第二個問題解決了,但是我用我圖片的方法做... ※ 編輯: andy79323 (120.109.170.21), 12/12/2015 17:51:58

12/13 08:08, , 27F
陣列宣告成dh[2], 操作時用dh[2]的資料是啥?陣列指示
12/13 08:08, 27F

12/13 08:08, , 28F
數超過1不會讀到亂碼嗎?
12/13 08:08, 28F

12/13 08:12, , 29F
我是指21樓下面的程式
12/13 08:12, 29F
文章代碼(AID): #1MQdblPx (C_and_CPP)