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

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

如下程序,運行結果是多少?為什么?

如下程序,運行結果是多少?為什么?

慕神8447489 2022-05-11 19:15:41
main() { union bt { int k; char c[2]; }a; a.k=-7; printf("%o,%o\n",a.c[0],a.c[1]); }
查看完整描述

2 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

Union是共用空間的。
和Struct不同。

共有4個字節,
第一個字節 k [0..7]位 和 c[0] 共用
第二個字節 k [8..15]位 和 c[1] 共用。
第三個字節 k [16..23]位。
第四個字節 k [24..31]位。

-7內部機器補碼為 FF FF FF F9 先低后高存放。
VC編譯器會在printf的時候自動轉為int型的變量。

a.k=-7;
printf("%o,%o\n",a.c[0],a.c[1]);
printf("%02X,%02X\n",(unsigned char)a.c[0], (unsigned char)a.c[1]);

的執行結果是:
37777777771,37777777777
F9,FF

F9 FF 是內存實際值的真實反映。可以自己去看內存。

查看完整回答
反對 回復 2022-05-16
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

#include<iostream.h>
#include<stdio.h>
void main()
{
union bt
{
int k;
char c[2];
}a;
a.k=-7;
printf("%o,%o\n",a.c[0],a.c[1]); //a.c[]沒有初始化,輸出的就是一個隨機值。 %o是以8無符號8進制數的形式輸出
}



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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