C/C++筆試題目

1. C語言中無符號數與有符號數html

unsigned int a = 6;
int b = -20;
printf("a+b = %d\n",a+b);            #輸出-14
printf("a+b %s \n",(a+b)>0 ? "> 0":" < 0");    #輸出a+b > 0

有符號數和無符號數在進行比較運算時(==,>=,<=,>,<),有符號數隱式的轉換成無符號數。上述中,a+b的值爲-14(1111_1111_1111_0010),可是a+b 比較時,隱式轉換成無符號數,所以輸出爲>0面試

記住一點:-1爲有符號整型數據,常量數值在整形範圍內,均爲int類型,若是爲正數或0,則做爲無符號int,不然爲有符號int。比較運算符兩邊的數據類型會在編譯器的幫助下,自動統一的。算法

再記住一點:C語言規定是從取值範圍小的往大的提高,char—>unsigned char—>short—>unsigned short—>int--->unsinged int—>long—>unsigned long –>long long ---> unsigned long long 數組

2. 函數不能反悔棧內存的指針,能夠返回堆內存的指針。對於空指針,連續兩次free,不會出錯。對於非空指針,連續兩次free,會出錯。函數

int *a1;
    a1 = (int*)malloc(10);
    a1[0]=10;
    printf("a1:%p a1[0]:%d \n",a1,a1[0]);     //輸出a1:0x85c9008 a1[0]:10
    free(a1);
    //free(a1);            //加上這句會報錯
    printf("a1:%p a1[0]:%d \n",a1,a1[0]);    //輸出a1:0x85c9008 a1[0]:0

根據輸出能夠得知,free後,a1的指向的地址值沒有改變,可是這塊地址所表明的空間已是無效空間了,不能使用。爲了防止這種狀況,free後的,應該設置a1= NULL; 這樣,防止後面的代碼對a1的空間誤操做。測試

3. 引用與指針有什麼區別?ui

    引用必須初始化,指針不須要。spa

    引用初始化以後不能被改變,指針能夠改變所指的對象。.net

    不存在指向空值的引用,可是存在指向空值的指針unix

4.C語言算法題目(一)

   C語言算法題目(二)

  IT公司筆試題目 IT公司筆試題目2 IT公司筆試題目3  IT公司筆試題目4

C語言基本函數構造

IT公司智力測試題目

面試中常常出現的算法

關於數組的幾道面試題

相關文章
相關標籤/搜索