找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5246|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

大神看看這個(gè)單片機(jī)錯(cuò)誤如何修改,警告 ‘=’ pointer truncation

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:218365 發(fā)表于 2021-1-13 22:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
unsigned int a;
struct {
    unsigned char d;
    unsigned char e;
}x[3];
main()
{
   a=(unsigned int *)&(x[1].d);
   while(1);     
}

a=(unsigned int *)&(x[1].d); 這一行提示警告 ‘=’ pointer truncation 應(yīng)該如何修改才不會(huì)提示警告

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:429003 發(fā)表于 2021-1-14 09:05 | 只看該作者
unsigned int *a;

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:752974 發(fā)表于 2021-1-14 10:55 | 只看該作者
代碼中的問題是變量的值和變量的地址沒有分清,教科書中現(xiàn)成的東西,仔細(xì)看看就知道了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:218365 發(fā)表于 2021-1-14 18:19 | 只看該作者

謝謝,這個(gè)辦法挺好
回復(fù)

使用道具 舉報(bào)

5#
ID:218365 發(fā)表于 2021-1-14 20:49 | 只看該作者
munuc_w 發(fā)表于 2021-1-14 10:55
代碼中的問題是變量的值和變量的地址沒有分清,教科書中現(xiàn)成的東西,仔細(xì)看看就知道了。

您提醒的對(duì),我改成a= *((unsigned int *)&(x[1].d));就沒有錯(cuò)誤了。
回復(fù)

使用道具 舉報(bào)

6#
ID:517466 發(fā)表于 2021-1-14 22:37 | 只看該作者
建議好好學(xué)習(xí)取地址與指針方面的知識(shí),以及在51單片機(jī)中的應(yīng)用。你的目的不應(yīng)該是讓程序編譯通過,而是搞懂每一個(gè)語句、每一個(gè)符號(hào)的意思。x[3],表示x是數(shù)組變量。&x[n]表示數(shù)組第n號(hào)元素的地址,已經(jīng)算是指針了。你的程序中,x[1].d是第一號(hào)元素的結(jié)構(gòu)體變量中的d變量, &(x[1].d)表示取得第一號(hào)元素的結(jié)構(gòu)體變量中的d變量所在的單元地址。 unsigned int a,表示a是一個(gè)整數(shù)變量,接收整形數(shù)據(jù)。
你的程序的目的是把數(shù)組中某個(gè)元素對(duì)應(yīng)的結(jié)構(gòu)體內(nèi)的兩個(gè)字符行數(shù)據(jù)轉(zhuǎn)換為整形數(shù)據(jù)后,賦值給a。
明白這個(gè)目的后,可以使用a= *((unsigned int *)&(x[1].d));也可以使用a=x[1].d*256+x[1].e;獲得轉(zhuǎn)換結(jié)果。
51系列中保存int型數(shù)據(jù)時(shí),數(shù)據(jù)保存在兩個(gè)單元中。高8位數(shù)據(jù)放在低地址單元中,低8位數(shù)據(jù)放在高地址單元。比如258這個(gè)數(shù)據(jù),轉(zhuǎn)換為16進(jìn)制數(shù)據(jù)為0x0102,假設(shè)這個(gè)數(shù)據(jù)保存在地址0x0008開始的單元中,那么0x0008單元中保存0x01,0x0009單元中保存0x02。
要注意的是,c語言中,針對(duì)不同的處理器,整形所占用的基本存儲(chǔ)單元是不一樣的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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