今天給大家分享我們在日常作業中可能遇到的疑問,不看答案,你是否有把握都能答對?讓我們來試試吧~
一、會輸出"hello-std-out"?

參考答案:
stdout和stderr是不同設備描述符,stdout是塊設備,stderr則不是,對于塊設備,只有當下面幾種情況下才會被輸入:遇到回車;緩沖區滿;flush被呼叫,而stderr則不會,
二、這段程式是有問題嗎?

參考答案:
這個程式會得到編譯出錯(語法出錯),逗號運算式是沒錯,可是在初始化和變數宣告時,逗號并不是逗號運算式的意義,這點要區分,要修改上面這個程式,你需要加上括號:"int a = (1,2);",
三、下面的程式會有什么樣的輸出呢?

參考答案
程式會輸出4321,你知道為什么嗎?要知道為什么,你需要知道printf的回傳值是什么,printf回傳值是輸出的字符個數,
四、下面的程式會輸出什么?

參考答案
該項程式輸出:"0 12 1095237632",
原因是:浮點數是4個位元組,12.5f轉成二進制是:01000001010010000000000000000000,十六進制是:0x41480000,十進制是:1095237632,所以,第二和第三個輸出相信大家也知道是為什么了,
而對于第一個,為什么會輸出0,我們需要了解一下float和double的記憶體布局,如下:
float: 1位符號位(s)、8位指數(e),23位尾數(m,共32位),
double: 1位符號位(s)、11位指數(e),52位尾數(m,共64位),
然后,我們還需要了解一下printf由于型別不匹配,所以,會把float直接轉成double,注意,12.5的float和double的記憶體二進制完全不一樣,別忘了在x86芯片下使用是的反位元組序,高位位元組和低位字位要反過來,所以:
float版:0x41480000 (在記憶體中是:00 00 48 41),
double版:0x4029000000000000 (在記憶體中是:00 00 00 00 00 00 29 40),
而我們的%d要求是一個4位元組的int,對于double的記憶體布局,我們可以看到前四個位元組是00,所以輸出自然是0了,這個示例向我們說明printf并不是型別安全的,這就是為什么C++要引如cout的原因了,
五、下面的程式輸出是多少?并解釋為什么?

參考答案
該程式在編譯時,報錯:“b”的初始化操作由“case”標簽跳過,“default”標簽跳過“b”的初始化操作
學C語言/C++的學習裙【七一二 二八四 七零五】,無論你是小白還是進階者,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多干貨和技術資料分享!
六、下面的程式會有什么潛在的危險?

參考答案
本題很簡單了,這個程式的潛在問題是,如果用戶輸入了超過80個長度的字符,那么就會有陣列越界的問題了,你的程式很有可能會crash了,
七、請問下面的程式輸出什么?

參考答案
如果你覺得輸出分別是:10,4,11,那么你就錯了,
錯在了第三個,第一個是10沒有什么問題,第二個是4,也沒有什么問題,因為是32位機上一個int有4個位元組,但是第三個為什么輸出的不是11呢?居然還是10?原因是,sizeof不是一個函式,是一個運算子,其求i++的型別的size,這是一件可以在程式運行前(編譯時)完全的事情,所以,sizeof(i++)直接就被4給取代了,在運行時也就不會有了i++這個運算式,
八、下面的程式的輸出值是什么?

參考答案
如果你對于PrintInt這個宏有問題的話,可以去看一看資料,不過,本例的問題不在這里,本例的輸出會是:1,8,64,1000,其實很簡單了,在C/C++中,以0開頭的數字都是八進制的,
九、下面的輸出是什么?

參考答案
本題并不簡單的是考前綴++或反綴++,本題主要考的是&&和||的短路求值的問題,
所謂短路求值:對于(條件1 && 條件2),如果“條件1”是false,那“條件2”的運算式會被忽略了,對于(條件1 || 條件2),如果“條件1”為true,而“條件2”的運算式則被忽略了,
所以,我相信你會知道本題的答案是什么了,
十、下面的C程式是合法的嗎?

參考答案
本例是合法的,輸出為:"Hello! how is this? super That is C !"
本例主要展示了一種另類的用法,下面的兩種用法是相同的:
"hello"[2]
2["hello"]
如果你知道:a[i] 其實就是 *(a+i)也就是 *(i+a),所以如果寫成 i[a] 應該也不難理解了,
以上十道題目你都可以回答對嗎?
另外,受這篇文章啟發,小編決定每周與大家分享我的交流群內小伙伴們的問題,以及給出解答方式,看看這些疑問是不是你會有的,和我們的小伙伴一起共同進步共同學習,
保持關注哦~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/169659.html
標籤:其他
