C/C++程序員面試基礎知識(二)

31問題:使用位操作符|和&實現給定一個整型變量a, 寫兩段代碼,第一個設置a的bit 3,第二個清除a的bit 3 。以上兩個操作中,要保持其它位不變。

回答:

#define BIT3 (0x1<<3)
static int a;

void set_bit3(void)
{
    a|=BIT3;
}
void clear_bit3(void)
{
    a &=~ BIT3;
}

32問題:運用位運算交換a、b兩數?

回答:

#include <stdio.h>
int main()
{
    int a=3;
    int b=4;

    a^=b;
    b^=a;
    a^=b;
    printf("a= %d, b=%d/n",a,b);
}

33問題:C/C++中的兩種死循環?

回答:1、 for(;;)死循環裏的兩個;;代表兩個空語句,編譯器一般會優化掉它們,直接進入循環體。 
while(1)死循環裏的1被看成表達式,每循環一次都要判斷常量1是不是等於零。 

for(;;) {循環體;};
按語法, for 循環 (初態;終態;步長) 這三部分,現在 是 (空語句;空語句;空語句)。
是合法的語句。由於沒有給 終態 (即允許繼續循環和終止循環的條件), 循環語句於是可以 永遠繼續下去。俗稱 無限循環 或 死循環。
但通常 循環體內 會有 語句控制 決定 是否中止。例如
for(;;) {... if (n>10) break; ...};
for(;;) {... if (n>10) goto Lab1; ...};

34問題:關鍵字static的作用是什麼?

回答:①在函數體內,被申明爲靜態的變量在這一函數被調用的過程中維持其值不變。

           ②在模塊內(但在函數外),一個被申明爲靜態的變量可以被模塊內的所有函數訪問,但不能被模塊外的其它函數所訪問,它是一個本地的全局變量。

          ③在模塊內,一個被申明爲靜態的函數只可被這一模塊內的其它函數調用,那就是這個函數被限制在申明它模塊的本地範圍內使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章