3 回答

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

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)

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了。
添加回答
舉報