2 c c 程式設計師面試寶典 操作符

2021-07-07 02:20:47 字數 3599 閱讀 8718

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 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...