點(diǎn)擊查看簡(jiǎn)單基礎(chǔ)版操作符介紹
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),岷縣網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:岷縣等地區(qū)。岷縣做網(wǎng)站價(jià)格咨詢:18980820575文章目錄#include //頭文件
_Bool flag = true; //賦值,賦值的選項(xiàng)只有true和false兩種選擇
_Bool flag = false;
return false; //返回的也只有這兩種選項(xiàng)
#includeint main()
{int a = 10;
int b = ++a; //b = 11 a = 11
int c = a + 1; //c = 11 a = 10
return 0;
}
a+1和++a都可以實(shí)現(xiàn)打出這個(gè)數(shù)+1的效果,但是a+1是不會(huì)改變a本身的數(shù)值的,也就是所是不會(huì)作用于自身的
int a = 3;
int* pa = &a;
*pa += 3; //*pa相當(dāng)于a
printf("%d\n", *pa);
printf("%d\n", a); //因?yàn)槭亲饔迷赼上的值修改,所以可以直接打印a
*(int *)地址——————指針是不能強(qiáng)制轉(zhuǎn)換的,,相當(dāng)于入室盜竊,不可取
char* p = "abcdef"; //這個(gè)是字符串字面量,傳進(jìn)去的是首個(gè)元素的地址
#includeint main()
{int a = 3;
int arr[10];
printf("%d", sizeof(a)); //ok
printf("%d", sizeof(int)); //ok
printf("%d", sizeof(arr)); //ok
printf("%d", sizeof(int [10])); //ok
printf("%d", sizeof a); //ok //如果是求變量的大小,可以省略括號(hào)
//printf("%d", sizeof int); //error //如果是求類(lèi)型的大小,則不能省略括號(hào)
return 0;
}
😊sizeof的特點(diǎn)
#includeint main()
{int a = 0;
short s = 5;
printf("%d\n", sizeof(s = a + 3)); //a+3是整型4個(gè)字節(jié),放在短整型2個(gè)字節(jié)里面會(huì)發(fā)生截?cái)? printf("%d\n", sizeof(s)); //sizeof內(nèi)部的表達(dá)式不計(jì)算,s未被賦值,依舊是5
return 0;
}
【2】sizeof和數(shù)組
😊大小計(jì)算
#includevoid test1(int arr[])
{printf("%d\n", sizeof(arr)); //4、8
}
void test2(char* ch[])
{printf("%d\n", sizeof(ch)); //4、8,因?yàn)榻邮盏氖堑刂?,指針變量的大小要?要么8,取決是32位還是64位環(huán)境
}
int main()
{int arr[10] = {0 };
char ch[10] = {0 };
printf("%d\n", sizeof(arr)); //輸出40,計(jì)算的是整個(gè)數(shù)組的大小
printf("%d\n", sizeof(ch)); //輸出10,計(jì)算的是整個(gè)數(shù)組的大小
test1(arr);
test2(ch);
return 0;
}
#includestruct book
{ //如何創(chuàng)建一個(gè)類(lèi)型
char name[10];
char author[10];
int price;
};
int main()
{struct book b1 = {"《活著》","余華",45 };
struct book* pb = &b1;
printf("%s %s %d\n", b1.name, b1.author, b1.price);
printf("%s %s %d\n", (*pb).name,(*pb).author, (*pb).price); //用指針
printf("%s %s %d\n", pb->name, pb->author, pb->price);
return 0;
}
#includeint main()
{int a = 3.14; //3.14是浮點(diǎn)型,放到整型里面會(huì)丟失數(shù)據(jù),但非要放就需要強(qiáng)制類(lèi)型轉(zhuǎn)換
printf("%d",a); //printf和scanf是以某種格式輸出/輸入的意思,不需要強(qiáng)制類(lèi)型轉(zhuǎn)換,已經(jīng)自身帶領(lǐng)隱性的意味了
return 0;
}
5.??條件操作符(三目操作符)如果表達(dá)式1成立,就輸出表達(dá)式2的結(jié)果,如果表達(dá)式1不成立,就輸入表達(dá)式3的結(jié)果
6.??位操作符(操作數(shù)只能是整數(shù)) 6.1 前情提要 【1】進(jìn)制位操作符,這個(gè)位究竟是什么?------二進(jìn)制位
計(jì)算機(jī)中有許多進(jìn)制的位,如常見(jiàn)的二進(jìn)制、八進(jìn)制、十六進(jìn)制等,我們看到的數(shù)值往往是以十進(jìn)制的形式展現(xiàn)的,每一個(gè)數(shù)值可以用不同的進(jìn)制表示,如
1111——二進(jìn)制位??????????????????表示的都是一個(gè)數(shù)。表現(xiàn)形式不同罷了
17——八進(jìn)制位
15——十進(jìn)制位
F——十六進(jìn)制位
而計(jì)算機(jī)中二進(jìn)制的表現(xiàn)形式一共有三種:原碼、反碼、補(bǔ)碼
- 原碼就是根據(jù)數(shù)值的大小和正反直接寫(xiě)出的32位或者64位二進(jìn)制
原碼的最高位是符號(hào)位,如果是0就表示是正數(shù),如果是1就表示是負(fù)數(shù)
- 反碼就是原碼除了符號(hào)位,其他位按位取反
- 補(bǔ)碼就是反碼+1
正數(shù)(包括0)的原碼、反碼、補(bǔ)碼相同,負(fù)數(shù)的則需要計(jì)算
內(nèi)存中存的是補(bǔ)碼,所以移位什么的,移的是補(bǔ)碼。
打印是按原碼來(lái)
【3】unsigned和signedunsigned:整數(shù)在內(nèi)存中以二進(jìn)制的補(bǔ)碼存儲(chǔ),最高位為符號(hào)位,這個(gè)可以實(shí)現(xiàn)最高位成為計(jì)算位,不是符號(hào)位——————無(wú)符號(hào)位
signed:因?yàn)槭悄J(rèn)數(shù)值存儲(chǔ)時(shí)有符號(hào)位的,所以基本省略掉了——————有符號(hào)位
6.2 &按位與對(duì)應(yīng)的二進(jìn)制位有0,則為0,除非兩個(gè)數(shù)都是1,才為1
6.3 | 按位或對(duì)應(yīng)的二進(jìn)制位,有1就為1,除非兩個(gè)數(shù)都是0,才為0
6.4 ^按位異或對(duì)應(yīng)的二進(jìn)制位,相同為0,相異為1
7.??移位操作符(操作數(shù)只能是正整數(shù))左移操作符:左邊拋棄,右邊補(bǔ)0
右移操作符:左邊用原該位的符號(hào)位填充,右邊丟棄
int a = 1<<4; //把1向左移動(dòng)4位的數(shù),賦值給a //左移操作符
int b = 1>>4; //把1向右移動(dòng)4位的數(shù),賦值給b //右移操作符
int num = 10;
int b = num<<1; //num本身的值沒(méi)有被改變
8.??邏輯操作符&& 邏輯與?????||邏輯或
區(qū)分:& 按位與?????|按位或
特點(diǎn)(坑點(diǎn)):
&&操作符:左邊為假,右邊無(wú)須計(jì)算
||操作符:左邊為真,右邊無(wú)須計(jì)算
邏輯操作符可以產(chǎn)生短路的效果
9.??逗號(hào)表達(dá)式形式:表達(dá)式1,表達(dá)式2,表達(dá)式3……表達(dá)式n
含義:用逗號(hào)隔開(kāi)的多個(gè)表達(dá)式
特點(diǎn):從左向右依次執(zhí)行,整個(gè)表達(dá)式的結(jié)果就是最后一個(gè)表達(dá)式的結(jié)果
#includeint main()
{int a = 1;
int b = 2;
int c = 0;
if (a = b + 1, c = a / 2, b >0) //依次執(zhí)行,前面如果有涉及值的修改,也會(huì)影響判斷部分,真正起到判斷部分的,是最后一個(gè)表達(dá)式,即b>0
{printf("大悲咒");
}
return 0;
}
10.??表達(dá)式求值?如何判斷計(jì)算順序【注意:相鄰的概念】
?一些問(wèn)題表達(dá)式
雖然通過(guò)上述方法可以確定計(jì)算順序,但是這個(gè)計(jì)算順序并不是唯一的,下面介紹一些問(wèn)題表達(dá)式
第一種
a* b + c * d + e * f; 優(yōu)先級(jí)只能確定相鄰操作符的順序,無(wú)法確定第三個(gè)*是否比第一個(gè)+早執(zhí)行
第二種
c + --c; 無(wú)法確定c是什么時(shí)候準(zhǔn)備好的,是在減減前就準(zhǔn)備好了
第三種 非法表達(dá)式
#includeint main()
{int i = 10;
i = i-- - --i * (i = -3) * i++ + ++i;
printf("i = %d\n", i);
return 0;
}
第四種
#includeint fun()
{static int count = 1;
return ++count;
}
int main()
{int answer;
answer = fun() - fun() * fun(); //只能確定先算乘法,再算減法,但是函數(shù)的調(diào)用順序是無(wú)法確定的
printf("%d\n", answer);
return 0;
}
😊總結(jié)
優(yōu)先級(jí)高并不代表表達(dá)式執(zhí)行順序優(yōu)先,就像a+f+bc,它可以是先a+f再加bc,它也可以先a+f再加bc,也可以是bc再加a。
沒(méi)法確定唯一計(jì)算路徑的就是問(wèn)題表達(dá)式,我們要通過(guò)括號(hào)去避免
10.2 類(lèi)型轉(zhuǎn)換 【1】隱性類(lèi)型轉(zhuǎn)換為什么會(huì)出現(xiàn)隱性類(lèi)型轉(zhuǎn)換這種情況?
?因?yàn)楸磉_(dá)式的整型運(yùn)算要在CPU的整型運(yùn)算器里面進(jìn)行,而里面運(yùn)算的操作數(shù)的字節(jié)長(zhǎng)度一般是整型的字節(jié)長(zhǎng)度。
即C語(yǔ)言的整數(shù)算術(shù)運(yùn)算默認(rèn)是以整型類(lèi)型的精度來(lái)進(jìn)行的
?但是字符和短整型的字節(jié)長(zhǎng)度是小于int類(lèi)型的,為了達(dá)到上述所提到的要求,就需要進(jìn)行整型提升,即在執(zhí)行運(yùn)算前,要把把字符類(lèi)型、短整型轉(zhuǎn)化成int類(lèi)型或者unsigned int類(lèi)型后,才送去CPU執(zhí)行運(yùn)算操作
隱性類(lèi)型轉(zhuǎn)換是如何進(jìn)行的
char a = 1; b和c先被提升為普通整型,然后再執(zhí)行加法運(yùn)算
char b = -1;
a = b + c; 執(zhí)行完加法運(yùn)算之后,結(jié)果將被截?cái)啵缓蟊淮鎯?chǔ)到a中
?使用場(chǎng)景:某個(gè)操作符的各個(gè)操作數(shù)屬于不同的類(lèi)型
?解決方法:其中一個(gè)操作數(shù)的轉(zhuǎn)換為另一個(gè)操作數(shù)的類(lèi)型,否則操作(運(yùn)算)無(wú)法進(jìn)行
- ong double
- double
- float
- unsigned long int
- long int
- unsigned int
- int
?具體:排名較低的那個(gè)類(lèi)型要首先轉(zhuǎn)換為另外一個(gè)操作數(shù)的類(lèi)型后執(zhí)行運(yùn)算
????就高不就低
?轉(zhuǎn)換要合理,如果你強(qiáng)行給整型類(lèi)型賦上一個(gè)浮點(diǎn)數(shù),會(huì)發(fā)生精度的丟失
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:初始C語(yǔ)言(操作符詳解)-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article26/dhgcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、網(wǎng)站維護(hù)、外貿(mào)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容