2.c/c++程式設計師面試寶典-操作符
面試題41 操作符有哪些分類***
面試題42 操作符優先順序對運算結果有什麼影響****
面試題43 邏輯操作與其他操作的關係**
面試題 44 自增自減前操作與後操作的區別****
面試題45 指標自增自減有什麼不同***
面試題41 操作符有哪些分類***
分析:操作符又被稱為運算子,表示式由乙個或多個運算元通過操作符組成,操作符對不同的資料進行操作,操作符表示程式中執行語句的性質。相同的操作符對不同資料型別的運算和運算結果都可能會出現不同。運算元執行什麼操作,以及操作結果的型別是由運算元型別來決定的。
c、c++提供了豐富的操作符以幫程式設計者完成執行語句,另外還提供了操作符過載功能,用以允許程式設計師自定義用於類型別是操作符的含義。c++標準庫就是使用了這種功能定義於庫型別的操作符。每個表示式都會產生乙個結果,如果表示式沒有任何操作符,則表示式產生的結果就是運算元本身。
按照所運算元的不同,操作符分為一元運算子(作用於乙個運算元)和二元運算子(作用於兩個運算元),此外還有乙個三元運算元(條件操作符)。有的操作符既可以是一元操作符又可以是二元操作符。
按照功能的不同,操作符分為算術操作符、關係操作符、邏輯操作符、位置操作符、賦值操作符、自增和自減操作符、箭頭操作符、條件操作符、sizeof操作符、逗號操作符等型別。
【答案】表示式是由操作符、運算元字和標點符號組成的序列,目的是為了說明乙個運算過程,操作符說明了表示式的主要目的,並且計算返回結果。
按照功能區分操作符有算術操作符、關係操作符、邏輯操作符、位置操作符、賦值操作符、自增和自減操作符、箭頭操作符、條件操作符、sizeof操作符、逗號操作符等10種型別。
按照運算元區分操作符分為一元操作符、二元操作符和三元操作符等3類。
面試題42 操作符優先順序對運算結果有什麼影響****
分析:操作符優先順序決定了表示式運算的次序、操作符優先順序越高,則運算次序越靠前。
在所有的優先順序中,有3個是從右至左結合的,分別是單目運算子、條件運算子、賦值運算子。其他的操作符都是從左至右結合的。
操作優先順序使用的示例**如下:
int x;
x= - 3 * 4 % -6 / 5; // x = (((-3) * 4) % (-6) ) / 5;
上面**中,「*」、「%」、和「/」的優先順序是一樣的,結合順序是自左向右。
int x = 2, y = 1, z = 0;
z + = - x ++ + ++ y; //z + = (- (x++) ) + (++y);
上面**中,「++」和「--」的優先順序要高於負號(「++」和「--」只對左值有效)。
int x = 1, y = 1, z =1;
z += x < y ? x ++ : y ++; //z += (x < y ? (x ++) : (y ++));
上面**中「+=」的優先順序僅高於「,」。
int x = 3, y=4, z =4;
(z >= y >= x) ? 1 : 0; //((z >= y) >=x) ? 1:0;
上面**中「>=」的結合順序是自左向右。
int x =1, y=1, z=1;
++x || ++ y && ++z; // ++ x || (++y && ++x);
上面**中,++x始終為真,由於||的短路,後面的表示式將不被計算,所以只有x變成了2.
通過操作符優先順序的不同運用,相同的運算元和操作符組合成的表示式可以得到不同的計算結果,c++的操作符優先順序一共有16個等級,如下表:
【答案】優先順序決定了表示式的運算順序,不同優先順序的運算子的不同使用會影響表示式的運算結果。
面試題43 邏輯操作與其他操作的關係**
分析:邏輯操作分為邏輯或、邏輯與和邏輯非3種,使用算術或指標型別的運算元,邏輯操作將其運算元視為條件表示式,它們都只返回true和false兩種值。
邏輯或(||)和邏輯與(&&)操作是二元運算子,它們首先對運算元求值,若結果為0,則條件為假(false),否則為真(true)。邏輯與操作符需要兩個運算元都為true,計算結果才為true。而邏輯或操作符只需要兩個運算元之一為true,它的結果就為true。
邏輯與和邏輯或操作符在使用時,總是先計算它的左運算元,然後再計算右運算元。只有在左運算元的值無法確定該邏輯表示式的結果時,才會去求解右運算元。這種求值方式也被稱為「短路求值」。
邏輯非操作是一元運算子,邏輯非操作符(!)將其運算元視為條件表示式,產生與其運算元值相反的條件值。如果其運算元為非零值,則做!操作後的結果為false。
乙個邏輯或和邏輯與運算子使用的示例**如下:
#include
using std::cin;
using std::cout;
using std::endl;
int main()
else
cout<
<
<
}else
上面是乙個簡單的貸款程式,根據輸入的年齡和收入或存款的情況來判定客戶是否可以貸款,如果可以,則輸出最大可以貸款的額度。其中,年齡是必須滿足大於等於21歲的,而收入大於25000和存款大於100 000只需要滿足一條即可,在這裡使用了邏輯或和邏輯與運算子來製作判斷條件。
【答案】邏輯操作只返回true和false這兩種值,它們可以用來做判斷條件,邏輯操作符不會改變被運算元的值。
面試題 44 自增自減前操作與後操作的區別****
分析:在c、c++中,自增(++)和自減(--)操作符為資料物件加1或減1操作提供了一種方便簡潔的實現方式。它們都有前置和後置兩種使用形式。自增操作符使得運算元的值加1,而自減操作符使得運算元的值減1.要替代以下**:
int a;
a=a+1;
可以使用
++a; //前自增
或a++; //後自增
前自增操作使其運算元加1,操作結果是修改後的值。同樣,前自減操作使其運算元的值減1.這兩種操作符的後置形式同樣對其運算元執行加1(或減1)的操作,但後置形式再操作後表示式的結果是運算元原來的、未修改的值。也就是說,前自增自減操作返回左值,也就是物件本身,而後自增自減操作返回的是右值。這二者的示例**如下:
int i=0, j;
j = ++i; //前自增操作,結果:j=1, i=1;
j = i++; //後自增操作,結果:j=1, i=2;
【答案】前自增自減操作的優先順序大於賦值運算子(=),而後自增自減操作的優先順序小於賦值運算子,後自增自減操作後表示式的值不會發生改變。
面試題45 指標自增自減有什麼不同***
分析:指標的自增和自減是將指標的所指位址加1或者減1的操作,也有前置和後置的兩種使用形式。
下面先來看乙個指標自增的示例**:
main()
在上面**中,p是乙個指標變數,++p將p加1,++*p將*p所指單元加1,*p++只將p加1,++*p++將p加1,同時也將*p所指單元加1.程式執行結果如下:
* p=ffb8;
*p=c
* p=ffb9;
* chinese people
【答案】變數的自增自減是修改變數的值,指標的自增自減是修改指標的指向位址。
C C 程式設計師面試寶典 2
9.關聯式資料庫的正規化 10.資料庫操作中的事務 事務的4個特性 11.數字矩陣的生成 對應的 如下 include include include define print arr2d arr,n else print arr2d arr,n 1 2 6 7 15 3 5 8 14 16 4 9...
程式設計師面試寶典 C C 記憶體分類
在進行c c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別。棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等。其操作方式類似於資料結構中的棧。堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式節束時可能由操 作...
程式設計師面試寶典
據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...