2、C语言面试笔试---运算符和表达式
文章目錄
- 背景
- 1、運(yùn)算符和表達(dá)式
- 1.1自增自減運(yùn)算符++與--
- 1.2 C語(yǔ)言符號(hào)的優(yōu)先級(jí)
- 1.3 類型轉(zhuǎn)換
- 1.4 順序點(diǎn)的概念
- 1.5 貪心法
- 2、面試筆試?yán)}
背景
1、運(yùn)算符和表達(dá)式
1.1自增自減運(yùn)算符++與–
n++:表示先返回n,再讓n+1=>n;
++n:表示先讓n+1=>n,再返回n;
n–:表示先返回n,再讓n-1=>n;
–n: 表示先讓n-1=>n,再返回n;
例如n=2,表達(dá)式n++是先返回n,即2,再n自增1變?yōu)?,表達(dá)式++n是先n自增1變?yōu)?,再返回n,即3.
#include <stdio.h>void main() { int a=4; int x=0; x=a++;printf("%d,%d",a,x);}
注意:
- 1
++、–運(yùn)算可以提高程序的執(zhí)行效率。這是因?yàn)?#43;+、–只需要一條機(jī)器指令就可以完成,而n=n+1要對(duì)應(yīng)3條機(jī)器指令。
- 2
自增自減運(yùn)算符的對(duì)象只能是簡(jiǎn)單變量,不能是常數(shù),或帶有運(yùn)算符的表達(dá)式,即5++、–(a+b)是錯(cuò)誤的。
- 3
編譯器實(shí)現(xiàn)n++/n–時(shí)是先創(chuàng)建n的一個(gè)副本,然后n自增/自減1,最后返回這個(gè)副本的值(這個(gè)副本與n的地址不同),所以n++.
編譯器實(shí)現(xiàn)++n/–n時(shí)是先n自增/自減1,最后返回n的值(不是副本的值)
C++ primer的書(shū)中,建議使用++n,而不是n++;++n的效率更高。
1.2 C語(yǔ)言符號(hào)的優(yōu)先級(jí)
注意逗號(hào)運(yùn)算符的優(yōu)先級(jí)別最低。以及自增自減運(yùn)算符.
注意或運(yùn)算,前面已經(jīng)是真后,不會(huì)再運(yùn)行后面的值。
1.3 類型轉(zhuǎn)換
注意所有浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅還有float但警服量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換為double類型,再做運(yùn)算。
char \short 參與運(yùn)算時(shí)必須先轉(zhuǎn)換成int類型
注意%求余只能在兩個(gè)整數(shù)之間進(jìn)行。
1.4 順序點(diǎn)的概念
#include <stdio.h>void main() { int a=2; int x=2; x=(++x)+(x++); a=a+++a++;printf("%d,%d\n",x,a);}
https://blog.csdn.net/qq_33436509/article/details/82111061
關(guān)于順序點(diǎn),我也有點(diǎn)迷糊,沒(méi)事,暫時(shí)擱置吧,留給以后領(lǐng)悟。
1.5 貪心法
符號(hào)指的是程序的一個(gè)基本組成單元,起作用相當(dāng)于一個(gè)句子中的單詞,在C編譯器解釋表達(dá)式符號(hào)時(shí),它在移動(dòng)到下一個(gè)符號(hào)之前在單個(gè)符號(hào)中包含盡可能多的字符,稱之為貪心法。
比如a++++b 這句話被解釋為(a++)++b(所以表達(dá)式錯(cuò)誤)
a+++b++被解釋為(a++)+(b++)表達(dá)式正確
2、面試筆試?yán)}
#include <stdio.h> int main() { int x; scanf("%d",&x); if (x++>5) printf("%d\n",x); else printf("%d\n",--x);//注意這行代碼 }
上面是輸入4,得到4
上面是輸入4得到5
注意:y=7/2,如果取7.0/2,取得的結(jié)果就是浮點(diǎn)型,否則默認(rèn)取整。
總結(jié)
以上是生活随笔為你收集整理的2、C语言面试笔试---运算符和表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1、C语言面试笔试---变量定义和声明
- 下一篇: 3、C语言面试笔试--控制结构