誰說C語言很簡單?來挑戰一下下面這九大案例試試看


前往文末領取學習資料

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

是的,C語言並不簡單,讓我們來看看下面這些示例:

1.為什麼下面的代碼會返回0?(這題應該很簡單吧)

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

本題主要是關於C/C++中變量初始化的問題。

2.為什麼下面的代碼會返回0而不是-1?

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

答案:sizeof是一個unsigned的類型,所以……


3.代碼作用域是一件很詭異的事,下面這個函數返回值是什麼?

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

答案:5


4.函數和函數指針可以相互轉換。下面的語句哪些是合法的?

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

答案:全部合法。


5.初始化可能是ISO C中最難的部分了。無論是MSVC 還是GCC 都沒有完全實現。GCC 可能更接近標準。在下面的代碼中,i.nested.y 和i.nested.z的最終值是什麼?

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

答案:2和6


誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言


6.下面這個示例是C語言的痛,main函數返回值是什麼?

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

答案:1(你知道為什麼嗎?)


7.下面這個例就更變態了。在GCC的文檔中,這個語法是合法的,但是不知道為什麼GCC並沒有實現。下面的代碼返回 2.

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言


8.在下面的這個示例中,有一個“bar” 函數及其函數指針 “pbar” 的兩個拷貝(static 類型一般作用於語句塊或文件域).

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言


9.下面的這個函數返回值是什麼?取決於編譯器是先處理unsigned long轉型,還是負號。

誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言

如果是: ((unsigned long) - 1) / 8,那將是一個很大的數。

如果是: (unsigned long) (- 1 / 8 ), 那將是 0


是的,這樣使用C語言可能很奇怪,不過我們可以從另一方面瞭解C語言的很多我們不常注意的特性。C語言其實並不容易。


誰說C語言很簡單?來挑戰一下下面這九大案例試試看

C語言


分享到:


相關文章: