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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5853|回復: 5
收起左側

大神看看這個單片機錯誤如何修改,警告 ‘=’ pointer truncation

[復制鏈接]
ID:218365 發(fā)表于 2021-1-13 22:25 | 顯示全部樓層 |閱讀模式
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 應該如何修改才不會提示警告

回復

使用道具 舉報

ID:429003 發(fā)表于 2021-1-14 09:05 | 顯示全部樓層
unsigned int *a;

評分

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

查看全部評分

回復

使用道具 舉報

ID:752974 發(fā)表于 2021-1-14 10:55 | 顯示全部樓層
代碼中的問題是變量的值和變量的地址沒有分清,教科書中現(xiàn)成的東西,仔細看看就知道了。

評分

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

查看全部評分

回復

使用道具 舉報

ID:218365 發(fā)表于 2021-1-14 18:19 | 顯示全部樓層

謝謝,這個辦法挺好
回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表