亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問0x39和0x38到底是什么意思?還有這個程序的答案是怎么求出來的?

請問0x39和0x38到底是什么意思?還有這個程序的答案是怎么求出來的?

繁星coding 2022-05-13 14:11:02
#include<stdio.h>main(){union{short i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39; s->i[1]=0x38;printf("%x\n",s->c[0]);}
查看完整描述

2 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

共用體
是一個
對于同一段數據
以多種不同的角度去看待的用的。
共用體長度
是4字節,也就是
你是怎么去看待這4字節里的數據的

s->i[0]=0x39;
/*
按照整型成員的類型賦值
*/
s->i[1]=0x38;
是不會被替換掉的。
這個共用體是由兩個int組成的長度。
你可以認為是
前兩個字節的值是0x39后兩個字節的值是0x38

查看完整回答
反對 回復 2022-05-16
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

我感覺你這個問題,應該是你沒理解聯合體的含義,你這個聯合體里的元素是i[2]、k、c[4],在內存中的某一時刻他們三個中只能存在一個,而你的實驗寫的是其中的一個元素i[2]的子元素,所以對于聯合體來說他還是他的i【2】元素,你沒分清聯合體的元素。

查看完整回答
反對 回復 2022-05-16
  • 2 回答
  • 0 關注
  • 713 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號