c語(yǔ)言邏輯表達(dá)式運(yùn)行步驟?
邏輯運(yùn)算符使用分析
&&和
1、程序中的短路
短路規(guī)則
從左向右開(kāi)始計(jì)算當(dāng)遇到為真的條件時(shí)停止計(jì)算整個(gè)表達(dá)式為真所有條件為假時(shí)表達(dá)式才為假。
&&從左向右開(kāi)始計(jì)算當(dāng)遇到為假的條件時(shí)停止計(jì)算整個(gè)表達(dá)式為假所有條件為真時(shí)表達(dá)式才為真
2、三目運(yùn)算法
a
返回的是變量的值而不是變量c++在這里進(jìn)行了改進(jìn)返回的是這個(gè)的引用。
*(a
五位運(yùn)算
C語(yǔ)言號(hào)稱高級(jí)語(yǔ)言為什么支持位運(yùn)算
在嵌入式開(kāi)發(fā)中會(huì)經(jīng)常與外部鏈接串口和并口很需要位運(yùn)算的
1、按位與2&3010&011=010
2、按位或2|3010|011=011
3、按位異或2^3010^011=011
有結(jié)合律和交換律
4、左移和右移注意點(diǎn)
左移運(yùn)算符<
規(guī)則高位丟棄低位補(bǔ)0
5、右移運(yùn)算符>>把運(yùn)算數(shù)的二進(jìn)制位右移
規(guī)則高位補(bǔ)符號(hào)位地位丟棄
6、防錯(cuò)準(zhǔn)則
避免位運(yùn)算符邏輯運(yùn)算符和數(shù)學(xué)運(yùn)算符同時(shí)出現(xiàn)在一個(gè)表達(dá)式中
當(dāng)位運(yùn)算符邏輯運(yùn)算符和數(shù)學(xué)運(yùn)算符需要同時(shí)參與運(yùn)算時(shí)盡量使用括號(hào)()來(lái)表達(dá)計(jì)算次
序
位移的大小不能大于輸?shù)拈L(zhǎng)度且不能為負(fù)的
7、Tips
左移n位相當(dāng)于乘以2的n次方但效率比數(shù)學(xué)運(yùn)算符高
右移n位相當(dāng)于除以2的n次方但效率比數(shù)學(xué)運(yùn)算符高
8、交換變量的三種方式
#defineSWAP1(a,b)\
{\
inttemp=a;\
a=b;\
b=temp;\
}
#defineSWAP2(a,b)\
{\
a=a+b;\
b=a-b;\
a=a-b;\
}//比第一種少用了一個(gè)變量,當(dāng)a和b很大的時(shí)候會(huì)溢出
#defineSWAP3(a,b)\
{\
a=a^b;\
b=a^b;\
a=a^b;\
}//效率最高但只適合整形(a^a)^b=b
試題有一個(gè)數(shù)列其中的自然數(shù)都是以偶數(shù)的形式出現(xiàn)只有一個(gè)自然數(shù)出現(xiàn)的次數(shù)為奇數(shù)次。編寫(xiě)程序找出這個(gè)自然數(shù)。
方法一將數(shù)列排序排序后去讀取一旦奇數(shù)個(gè)就跳出
方法二用空間換時(shí)間先找到最大的數(shù)n然后申請(qǐng)n個(gè)空間,把數(shù)組清零
然后用循環(huán)for(...)b[a[i]]++;最后遍歷數(shù)組的大小一但是奇數(shù)就返回。
方法三用按位異或不斷的消除最后只剩下一個(gè)就是要的答案
#include
Intmain()
{
Inta={1,1,1,2,3,4,5,6,5,6,4,3,2};