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

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

如下是關于c++的三個問題,麻煩大神幫忙分析一下~

如下是關于c++的三個問題,麻煩大神幫忙分析一下~

森林海 2022-05-10 17:13:06
28. 設有如下說明typedef struct ST{long a;int b;char c[2];}NEW;則下面敘述中正確的是A. 以上的說明形式非法B. ST是一個結構體類型C. NEW是一個結構體類型 CD. NEW是一個結構體變量27. 若有以下說明和定義union dt{int a;char b;double c;}data;以下敘述中錯誤的是A. data的每個成員起始地址都相同B. 變量data所占的內存字節數與成員c所占字節數相等C. 程序段:data.a=5;printf("%f\n",data.c);輸出結果為5.000000 CD. data可以作為函數的實參7. 在TC中,已知: unsigned int x=65535;則執行以下語句后的x 值為 ( )。 printf(“%d\n”,x);A. 65535B. 1C. 無定值D. -1D
查看完整描述

3 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

第一題:C,C語言中,struct ST是一個數據類型的名字,NEW是對他起的別名,具體參見typedef的定義。所以選擇C。
第二題:C選項中,由于整型數和浮點型數內存中編碼方式不同,所以輸出肯定不會是5.000000,B選項是對的,因為UNION的類型的特征就是這個。
第三題:由于無符號數和有符號數的編碼方式不同,對于無符號數的65535,當作有符號數的時候,會十個負數,選項D。

查看完整回答
反對 回復 2022-05-16
?
呼啦一陣風

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

28、C
D是錯誤的,注意前面有typedef,如沒有,D正確。關于類型名稱這點沒什么具體的說法,非要說struct ST是類型,而ST不是類型,但定義時候應使用struct ST,而不是ST。 B也沒什么嚴格錯誤。
27、C
printf中的格式控制是%f,也就是浮點數,所有輸出肯定不是5,浮點數內存表示方法不是直接映射的。聯合體占的字節是聯合體中最大成員所占字節數,所以 B是正確的。
7、A
TC整型占2字節,16位,所以無符號最大表示是2^16-1=65535。輸出可能不會是65535,因為printf是用%d控制,而不是%u。但是題問的是x的值,x值沒有改變。
這些題沒什么意義吧,很不嚴謹,比如27的A,就有不對的可能,涉及到大端小端(big endian little endian)



查看完整回答
反對 回復 2022-05-16
?
搖曳的薔薇

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

首先,雖然C++是C的超集,但你的問題全都是C的問題,不涉及C++特性。然后,再具體看你的問題:
28:已給出的答案 C 正確。typedef 定義了一個新類型叫做"NEW"。
29:已給出的答案 C 正確(即:該敘述錯誤)。浮點數在內存里的二進制表示方法和整數表示方法完全不同,具體參見IEEE-754標準。同樣的二進制內容當做整數值是5時,當作浮點數就完全不是5。
7:已給出的答案D正確。它考的是上世紀90年代TC(Borland Turbo C)那個16位編譯器的東東,所以嚴格說這是個歷史題不是C或者C++的題。int如果16位長,給出的那個值溢出了,答案是D。但這個年代的機器基本上都是32或者64位的int,沒有溢出所以答案會是A。由于結果取決于硬件環境和軟件(編譯器),如果該題不是問TC這個16位文物的話,答案就是C了。



查看完整回答
反對 回復 2022-05-16
  • 3 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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