面試題總結 – C 語言 – 預先處理(preprocessor)

來源:互聯網
上載者:User

1. 用預先處理指令#define 聲明一個常數,用以表明1年中有多少秒(忽略閏年的問題)

answer:

SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

注釋: 我這裡想看到幾件事情:

1, #define 文法的基本知識(例如不能以分號結束,括弧的使用,等等)

2,懂得前置處理器將為你的計算常數運算式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰兒沒有代價的。

3,意識到這個運算式將使一個16位機的整形數一處,因此要用到長整形符號L,告訴編譯器這個常數是長型整數。

4,如果你在你的運算式中用到UL(表示無符號長整型),那麼你有一個好的起點,記住,第一映像很重要。

2,寫一個標準宏 MIN, 這個宏輸入兩個參數並返回較小的一個數。

answer:

#define MIN(A,B) ((A) <= (B) ?  (A) : (B))

注釋:這個測試是為了下面的目的而設的:

1,標識#define在宏中應用的基本知識。這是很重要的,因為知道潛入(inline)位操作符變為標準C餓一部分,宏是方便產生嵌入常量的唯一方法,對於嵌入式系統來說,為了能達到要求的效能,嵌入式常量經常是必須的方法。

2,懂得在宏中小心的把參數用括弧括起來

3, 我也用這個問題開始討論宏的副作用,例如:當你寫下面的代碼的時候會發生什麼事?

least = MIN(*p++, b);

3. 前置處理器標識#error的目的是什嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.