**的別人,還不錯
預處理器(preprocessor)
1. 用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)
我在這想看到幾件事情:
1). #define 語法的基本知識(例如:不能以分號結束,括號的使用,等等)
2). 懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是如何計算一年中
有多少秒而不是計算出實際的值,是更清晰而沒有代價的。
3). 意識到這個表示式將使乙個16位機的整型數溢位-因此要用到長整型符號l,告訴編
譯器這個常數是的長整型數。
4). 如果你在你的表示式中用到ul(表示無符號長整型),那麼你有了乙個好的起點。
記住,第一印象很重要。
2. 寫乙個「標準」巨集min,這個巨集輸入兩個引數並返回較小的乙個。
typedef struct s * tps;
以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?
(如果有的話)為什麼?
這是乙個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是
:typedef更好。思考下面的例子:
dps p1,p2;
tps p3,p4;
第乙個擴充套件為
struct s * p1, p2;
上面的**定義p1為乙個指向結構的指,p2為乙個實際的結構,這也許不是你想要的。第
二個例子正確地定義了p3 和p4 兩個指標。
晦澀的語法
16. c語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什麼?
int a = 5, b = 7, c;
c = a+++b;
這個問題將做為這個測驗的乙個愉快的結尾。不管你相不相信,上面的例子是完全合乎語
法的。問題是編譯器如何處理它?水平不高的編譯作者實際上會爭論這個問題,根據最處
理原則,編譯器應當能處理盡可能所有合法的用法。因此,上面的**被處理成:
c = a++ + b;
因此, 這段**持行後a = 6, b = 7, c = 12。
如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個當作問題
。我發現這個問題的最大好處是:這是乙個關於**編寫風格,**的可讀性,**的可修
改性。>
嵌入式面試題
15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...
嵌入式技術面試指南
僱傭合適的人對於fog creek軟體公司來說是非常關鍵的。在我們這個領域,有三類人可以挑選。在乙個極端,是哪些混進來的,甚至缺乏最基本的工作技巧.只要問這類人兩三個簡單的問題,再讀一下他們的簡歷,就可以輕易地剔除他們。另乙個極端的型別是 才華橫溢的超級明星這些人僅僅為了好玩就用組合語言為palm ...
嵌入式面試題
1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...