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