當前位置:編程學習大全網 - 編程語言 - 學生來看這8道C語言謎題妳能答對幾個

學生來看這8道C語言謎題妳能答對幾個

C語言8個語言謎題答對幾個

1、下面的程序並不見得會輸出"hello-std-out"妳知道為什麽嗎?

參考答案:stdout和stderr是不同設備描述符。stdout是塊設備,stderr則不是。對於塊設備,只有當下面幾種情況下才會被輸入:遇到回車; 緩沖區滿;flush被調用。而stderr則不會。

2、下面的程序看起來是正常的,使用了壹個逗號表達式來做初始化。可惜這段程序是有問題的。妳知道為什麽嗎?

參考答案:這個程序會得到編譯出錯(語法出錯)。逗號表達式是沒錯可是在初始化和變量聲明時,逗號並不是逗號表達式的意義。這點要區分,要修改上面這個程序,妳需要加上括號:"int a=(1,2);"。

3、下面的程序會有什麽樣的輸出呢?

參考答案:程序會輸出4321,妳知道為什麽嗎?要知道為什麽,妳需要知道printf的返回值是什麽。printf返回值是輸出的字符個數。

4、下面的程序會輸出什麽?

參考答案:該項程序輸出:"0121095237632"。原因是:浮點數是4個字節,12.5f轉成二進制是:

01000001010010000000000000000000,十六進制是:0x41480000,十進制是:1095237632。所以,第二和第三個輸出相信大家也知道是為什麽了。

5、下面,我們再來看壹個交叉編譯的事情,下面的兩個文件可以編譯通過嗎? 如果可以通過,結果是什麽?

參考答案:該程序可以編譯通過,但運行時會出錯。為什麽呢? 原因是在另壹個文件中用 extern int *arr來外部聲明壹個數組並不能得到實際的期望值,因為他們的類型並不匹配。所以導致指針實際並沒有指向那個數組。

6、請問下面的程序會有什麽潛在的危險?

參考答案:本題很簡單了。這個程序的潛在問題是,如果用戶輸入了超過80個長度的字符,那麽就會有數組越界的問題了,妳的程序很有可能會crash了。

7、請問下面的程序輸出是什麽?(絕對不是10)

參考答案:本題輸出的是100。為什麽呢?問題就出在"y = y/*p;"上了我們本來想的是"y /(*p)”,然而,我們沒有加入空格和括號,結果"y/*p“中的"/*"被解釋成了註釋的開始。於是,這也是整個惡夢的開始。

8、下面的輸出是什麽?

參考答案:本題並不簡單的是考前綴++或反綴++,本題主要考的是&&和|1的短路求值的問題。

所謂短路求值:對於(條件1 && 條件2),如果“條件1”是false,那“條件2”的表達式會被忽略了。對於(條件1條件2),如果“條件1”為true,而“條件2”的表達式則被忽略了

  • 上一篇:app開發流程詳解?
  • 下一篇:2022高考數學題及答案(2020高考數學題及答案解析)
  • copyright 2024編程學習大全網