這篇“C語言操作符怎么應(yīng)用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言操作符怎么應(yīng)用”文章吧。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),永吉企業(yè)網(wǎng)站建設(shè),永吉品牌網(wǎng)站建設(shè),網(wǎng)站定制,永吉網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,永吉網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1.在進(jìn)行除法運(yùn)算的時(shí)候,如果兩個(gè)操作數(shù)都是整數(shù),那么結(jié)果就是整數(shù)。要想得到的結(jié)果是浮點(diǎn)數(shù),至少有一個(gè)操作數(shù)是浮點(diǎn)數(shù),最后的結(jié)果也是定義為浮點(diǎn)類型。
2.在進(jìn)行取模運(yùn)算的時(shí)候,兩個(gè)操作數(shù)都必須是整數(shù),不能是小數(shù)。
3.右移分為算術(shù)右移和邏輯右移:
算術(shù)右移
右邊丟棄,左邊補(bǔ)原符號(hào)位
邏輯右移
右邊丟棄,左邊補(bǔ)0
左移操作符:左邊丟棄,右邊補(bǔ)0
在我們C語言編程環(huán)境中,一般使用的都是算術(shù)右移
整數(shù)在內(nèi)存的存儲(chǔ)都是以補(bǔ)碼的形式存儲(chǔ)的,正整數(shù)的源碼,反碼,補(bǔ)碼三者相同。
4.不能創(chuàng)建臨時(shí)變量,交換兩個(gè)數(shù)
加減法(因?yàn)閍,b都是整型,所以存儲(chǔ)范圍都是有限的,當(dāng)a,b的值過大的時(shí)候,就有可能會(huì)產(chǎn)生溢出)
#define _CRT_SRCURE_NO_WARNINGS
#include
int main()
{
int a=3;
int b=5;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d\nb=%d\n",a,b);
return 0;
}
異或的方法
#define _CRT_SRCURE_NO_WARNINGS
#include
int main()
{
int a=3;
int b=5;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d\nb=%d\n",a,b);
return 0;
}
5.求一個(gè)整數(shù)存儲(chǔ)在內(nèi)存中二進(jìn)制中1的個(gè)數(shù)
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int main()
{
int a = 0;
int i = 0;
int count = 0;
printf("請(qǐng)輸入一個(gè)數(shù):>");
scanf("%d", &a);
for (i = 0; i < 32; i++)
{
if ((a>>i & 1) == 1)
{
count++;
}
}
printf("%d\n", count);
return 0;
}
6.sizeof 運(yùn)算符只負(fù)責(zé)計(jì)算空間大小,即使里面進(jìn)行了運(yùn)算,但是不會(huì)真的改變其大小
7.邏輯與有一個(gè)特點(diǎn)就是,從左向右與的時(shí)候,一旦左邊出現(xiàn)假,即結(jié)果為0,那么右邊的操作便不再進(jìn)行。
邏輯或的特點(diǎn)是一旦最左邊為真,即為1,那么右邊的操作便不再進(jìn)行
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int main()
{
int i= 0,a=0,b=2,c=3,d=4;
i = a++ && ++b && d++;
printf("a=%d b=%d c=%d d=%d\n",a,b,c,d);
return 0;
}
結(jié)果為1 2 3 4
8.三目操作符
exp1? exp2:exp3;如果表達(dá)式1為真,就執(zhí)行表達(dá)式2,為假就執(zhí)行表達(dá)式3
9.逗號(hào)表達(dá)式
exp1,exp2,exp3,exp4,exp5……
逗號(hào)表達(dá)式,就是用逗號(hào)隔開的多個(gè)表達(dá)式,逗號(hào)表達(dá)式,從左向右依次執(zhí)行。整個(gè)表達(dá)式的結(jié)果是最后一個(gè)表達(dá)式的結(jié)果。
10.訪問一個(gè)結(jié)構(gòu)的成員
結(jié)構(gòu)體.成員名
結(jié)構(gòu)體指針->成員名
#define _CRT_SECURE_NO_WARNINGS
#include
#include
struct Student
{
char name[10];
int age;
char sex[5];
double score;
};//定義一個(gè)結(jié)構(gòu)體
void set_age1(struct Student stu)
{
stu.name = 18;
}
void set_age2(struct Student* pStu)
{
pStu->age = 18;
}
int main()
{
struct Student stu;//在這里,struct Student就類似于int,是一種類型,被稱為結(jié)構(gòu)體類型
struct Student* pstu = &stu;//定義一個(gè)結(jié)構(gòu)體指針,因?yàn)閟tu是結(jié)構(gòu)體變量,所以存儲(chǔ)其地址的指針類型叫做結(jié)構(gòu)體指針
stu.age = 20;//結(jié)構(gòu)體成員訪問
set_age1(stu);
pstu->age = 20;//結(jié)構(gòu)體成員訪問
set_age2(pstu);
return 0;
}
11.隱式類型轉(zhuǎn)換
整形提升是按照變量的數(shù)據(jù)類型的符號(hào)位來提升的。即如果符號(hào)位為1,那么前面就補(bǔ)1,如果符號(hào)位為0,那么前面就補(bǔ)0。凡是對(duì)操作數(shù)進(jìn)行運(yùn)行算的,都會(huì)進(jìn)行整型提升。
整型提升的意義:
表達(dá)式的整型運(yùn)算要在CPU的相應(yīng)運(yùn)算去件內(nèi)執(zhí)行,CPU內(nèi)整型運(yùn)算器(ALU)的操作數(shù)的字節(jié)長度一般就是int的字節(jié)長度,同時(shí)也是CPU的通用寄存器的長度。
因此,即使兩個(gè)char類型的相加,在CPU執(zhí)行時(shí)實(shí)際上也要先轉(zhuǎn)換為CPU內(nèi)整型操作數(shù)的標(biāo)準(zhǔn)長度。
通用CPU是難以直接實(shí)現(xiàn)兩個(gè)8比特字節(jié)直接相加運(yùn)算(雖然及其指令中可能有這種字節(jié)相加指令)。所以,表達(dá)式中各種長度可能小于int長度的整型值,都必須先轉(zhuǎn)換為int或unsigned int,然后才能送入CPU去執(zhí)行。
算術(shù)類型轉(zhuǎn)換
long double
double
float
unsigned long int
long int
unsigned int
int
從下到上類型等級(jí)依次提高,如果不同等級(jí)同時(shí)出現(xiàn),要轉(zhuǎn)換成等級(jí)較高的類型。
12.操作符的屬性
復(fù)雜表達(dá)式的求值有三個(gè)影響因素:
1.操作符的優(yōu)先級(jí)
2.操作符的結(jié)合性
3.是否控制求值順序
兩個(gè)相鄰的操作符先執(zhí)行哪個(gè)?取決于他們的優(yōu)先級(jí),如果兩者的優(yōu)先級(jí)相同,再取決于操作符的結(jié)合性
以上就是關(guān)于“C語言操作符怎么應(yīng)用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。