一步一個腳印,一路的風(fēng)景才是最好的回饋!??!
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比肥城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式肥城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋肥城地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
概述
- 表達(dá)式書寫規(guī)則:
- 運(yùn)算符不能相鄰
- 乘號不能省略
- 可用多層括號表示運(yùn)算次序,但必須成對出現(xiàn)
- 運(yùn)算符分類:
一、算術(shù)表達(dá)式
- 單目運(yùn)算符不會改變操作數(shù)的值
- 整數(shù)相除會向下取整
- 求模運(yùn)算只針對整數(shù),且求模運(yùn)算符號只與被模數(shù)有關(guān)
- 運(yùn)算技巧:
- 7%2——7-(7/2)*2=1
- 5%2——5-(5/2)*2=1
二、賦值運(yùn)算符、關(guān)系運(yùn)算符
三、邏輯運(yùn)算符
- &&,||,!
- &&和||存在短路現(xiàn)象,&&只要第一個條件為假,整個都為假,不用判斷后一個條件;同理||,只要第一個為真,整個都為真,不用判斷后一個
- printf是有返回值,返回的是輸出的字節(jié)數(shù)
printf(" ")&&printf("ABCD")輸出0
四、特殊運(yùn)算符
1.++ --對變量進(jìn)行加1減1
2.只能對變量使用,不能用于常量和表達(dá)式
例如:
int a[10];
*(a++);//不合法
數(shù)組名代表首地址,是常量
3. 前置時先運(yùn)算,再使用,后置相反
4. 一般不要嵌套使用
五、其它運(yùn)算符
- 逗號運(yùn)算符
- 條件表達(dá)式
條件?成立:不成立; - &取地址
- sizeof判斷數(shù)據(jù)類型或者表達(dá)式長度(字節(jié))的運(yùn)算符
- 類型轉(zhuǎn)換:(目標(biāo)類型)數(shù)據(jù);
六、位運(yùn)算符
- 按位與 &有0則0如2&4得0
- 按位或 |有1則1如2 | 4得6
- 按位異或 ^相同為0,不同為1如2^4得6
- 按位取反 ~ 單目運(yùn)算符0變1,1變0
- 右移:>>右移操作就是整體往右移動n位,左邊缺得補(bǔ)充符號位
例如:2 >>1 ->0000 0010>>1 ->0000 0001 ->1
10 >>2 ->0000 1010 >>2 ->0000 0010 ->2 - 左移<< 2<<1 ->0000 0010<<1 ->0000 0100 ->4
七、位運(yùn)算得應(yīng)用- 判斷一個數(shù)得最低位是0還是1
思路;用0x1按位與判斷0000 0001
如:printf(“%d",0&0x1)為0 - 判斷一個數(shù)的最高位是0還是1
思路;用0x80按位或判斷1000 0000 - 取出uint32_t color 每個字節(jié)中的數(shù)據(jù)
uint32_t color=0x123456;
uint8_t a=(uint8_t)color;
uint8_t b=(uint8_t)(color>>8);
其它同理 - 給定兩個uint8_t類型的數(shù),分別放入uint16_t的高字節(jié)和低字節(jié)
uint8_t Hi=0x1A;
uint8_t Lo=0x28;
uint16_t ver;
ver=((uint16_t)( Hi<<8 )) | Lo;
解釋:Hi<<8左移后,后八位都是0,而按位或運(yùn)算又是有一則一 - 現(xiàn)在有如下幾個狀態(tài)
const int play=1<<0; //1 播放狀態(tài)
const int stop=1<<1; //2 停止?fàn)顟B(tài)
const int pause=1<<2; //4 暫停狀態(tài)
如果一個變量保存有多種狀態(tài),并能反向識別出該變量有哪些狀態(tài),應(yīng)如何處理?
注意狀態(tài)的設(shè)置要保證無重復(fù),有規(guī)律,最好是2n
int state=play | stop; //保存play,stop,3
//分別判斷state里面是否有play,stop,pause,
//注意不要用if-else,狀態(tài)會有多種
if(state &play) printf("play\n"); //state &play==1
if(state &stop) printf("stop\n"); //state &stop==2
if(state &pause) printf("pause\n"); //state &play==0,沒找到
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:c語言復(fù)習(xí)之運(yùn)算符和表達(dá)式(四)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:
http://weahome.cn/article/pecdi.html