各位少年,我是博主那一臉陽光
,今天來分享深度解析C語言操作符,C語言操作符能幫我們解決很多邏輯性的問題,減少很多代碼量,就好比數(shù)學(xué)的各種符號,我們現(xiàn)在深度解剖一下他們。
前言
在追求愛情的道路上,擁有吸引人的外表與內(nèi)在氣質(zhì)固然重要,它們?nèi)缤残浅?,為你的個人魅力增光添彩。然而,真誠的情感交流和恰到好處的方式方法,更是搭建心橋、拉近彼此距離的關(guān)鍵所在。這些小手段并非是欺騙或偽裝,而是用心去了解對方的需求,用行動表達(dá)自己的誠意,通過細(xì)微之處展現(xiàn)關(guān)愛與尊重。
比如,學(xué)會傾聽,理解她的內(nèi)心世界;適時給予鼓勵和支持,讓她感受到你的力量和溫暖;或者是在日常生活中制造些微小而甜蜜的驚喜,讓她看見你獨特的浪漫與體貼。這些“小手段”,實則是情感智慧的體現(xiàn),它們將幫助你在贏得芳心的旅程中,既能展現(xiàn)出真實的自我,又能以最適宜的方式打動她的心扉。
C語言操作符分類
操作符的分類
? 算術(shù)操作符: + 、- 、* 、/ 、%
? 移位操作符: << >>
? 位操作符: `& | ^
? `賦值操作符: = 、+= 、 -= 、 = 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^=
? 單?操作符: !、++、–、&、、+、-、~ 、sizeof、(類型)
? 關(guān)系操作符: > 、>= 、< 、<= 、 == 、 !=
? 邏輯操作符: && 、||
? 條件操作符: ? :
? 逗號表達(dá)式: ,
? 下標(biāo)引?: []
? 函數(shù)調(diào)?: ()
? 結(jié)構(gòu)成員訪問: . 、->
?進(jìn)制和進(jìn)制轉(zhuǎn)換
其實我們經(jīng)常能聽到2進(jìn)制、8進(jìn)制、10進(jìn)制、16進(jìn)制這樣的講法,那是什么意思呢?其實2進(jìn)制、8進(jìn)
制、10進(jìn)制、16進(jìn)制是數(shù)值的不同表?形式?已。
?如:數(shù)值15的各種進(jìn)制的表?形式:
15的2進(jìn)制:1111
15的8進(jìn)制:17
15的10進(jìn)制:15
15的16進(jìn)制:F
我們重點介紹?下?進(jìn)制:
?先我們還是得從10進(jìn)制講起,其實10進(jìn)制是我們?活中經(jīng)常使?的,我們已經(jīng)形成了很多嘗試:
? 10進(jìn)制中滿10進(jìn)1
? 10進(jìn)制的數(shù)字每?位都是0~9的數(shù)字組成
其實?進(jìn)制也是?樣的
? 2進(jìn)制中滿2進(jìn)1
? 2進(jìn)制的數(shù)字每?位都是0~1的數(shù)字組成
那么 1101 就是?進(jìn)制的數(shù)字了。
2進(jìn)制轉(zhuǎn)10進(jìn)制
其實10進(jìn)制的123表?的值是?百??三,為什么是這個值呢?其實10進(jìn)制的每?位是權(quán)重的,10進(jìn)
制的數(shù)字從右向左是個位、?位、百位…,分別每?位的權(quán)重是 10 , 10 , 10 …
2進(jìn)制和10進(jìn)制是類似的,只不過2進(jìn)制的每?位的權(quán)重,從右向左是: 2 , 2 , 2 … 0 1 2
如果是2進(jìn)制的1101.
8進(jìn)制的數(shù)字每?位是07的,07的數(shù)字,各?寫成2進(jìn)制,最多有3個2進(jìn)制位就?夠了,?如7的?
進(jìn)制是111,所以在2進(jìn)制轉(zhuǎn)8進(jìn)制數(shù)的時候,從2進(jìn)制序列中右邊低位開始向左每3個2進(jìn)制位會換算?
個8進(jìn)制位,剩余不夠3個2進(jìn)制位的直接換算。
如:2進(jìn)制的01101011,換成8進(jìn)制:0153,0開頭的數(shù)字,會被當(dāng)做8進(jìn)制。
2進(jìn)制轉(zhuǎn)8進(jìn)制
8進(jìn)制的數(shù)字每?位是07的,07的數(shù)字,各?寫成2進(jìn)制,最多有3個2進(jìn)制位就?夠了,?如7的?
進(jìn)制是111,所以在2進(jìn)制轉(zhuǎn)8進(jìn)制數(shù)的時候,從2進(jìn)制序列中右邊低位開始向左每3個2進(jìn)制位會換算?
個8進(jìn)制位,剩余不夠3個2進(jìn)制位的直接換算。
如:2進(jìn)制的01101011,換成8進(jìn)制:0153,0開頭的數(shù)字,會被當(dāng)做8進(jìn)制。
原碼、反碼、補(bǔ)碼
整數(shù)的2進(jìn)制表??法有三種,即原碼、反碼和補(bǔ)碼
有符號整數(shù)的三種表??法均有符號位和數(shù)值位兩部分,2進(jìn)制序列中,最?位的1位是被當(dāng)做符號
位,剩余的都是數(shù)值位。
符號位都是?0表?“正”,?1表?“負(fù)”。
正整數(shù)的原、反、補(bǔ)碼都相同。
負(fù)整數(shù)的三種表??法各不相同。
原碼:直接將數(shù)值按照正負(fù)數(shù)的形式翻譯成?進(jìn)制得到的就是原碼。
反碼:將原碼的符號位不變,其他位依次按位取反就可以得到反碼。
補(bǔ)碼:反碼+1就得到補(bǔ)碼。
反碼得到原碼也是可以使?:取反,+1的操作。
對于整形來說:數(shù)據(jù)存放內(nèi)存中其實存放的是補(bǔ)碼
為什么呢?
在計算機(jī)系統(tǒng)中,數(shù)值?律?補(bǔ)碼來表?和存儲。原因在于,使?補(bǔ)碼,可以將符號位和數(shù)值域統(tǒng)?
處理;同時,加法和減法也可以統(tǒng)?處理(CPU只有加法器)此外,補(bǔ)碼與原碼相互轉(zhuǎn)換,其運(yùn)算
過程是相同的,不需要額外的硬件電路。
移位操作符
<<
左移操作符,把某個整數(shù)必須是整數(shù)左移一位以后計算后的結(jié)果,請看下面代碼演示過程
int main()
{
inr m=10;
int n=m<<1;
printf("n=%d\n",n);
printf("m=%d\n",n);
return 0;
}
右移操作符
移位規(guī)則:?先右移運(yùn)算分兩種:
- 邏輯右移:左邊?0填充,右邊丟棄
- 算術(shù)右移:左邊?原該值的符號位填充,右邊丟棄
3. #include <stdio.h>
int main()
{
int num = 10;
int n = num>>1;
printf("n= %d\n", n);
printf("num= %d\n", num);
return 0;
}
警告??:對于移位運(yùn)算符,不要移動負(fù)數(shù)位,這個是標(biāo)準(zhǔn)未定義的。
例如:
int num = 10;
num>>-1;//error
位操作符 & | ^ ~
& //按位與
| //按位或
^ //按位異或
~ //按位取反```
``他們的操作數(shù)必須是整數(shù)。
直接上代碼:
#include <stdio.h>
int main()
{
int num1 = -3;
int num2 = 5;
printf("%d\n", num1 & num2);
printf("%d\n", num1 | num2);
printf("%d\n", num1 ^ num2);
printf("%d\n", ~0);
return 0;
}
?道變態(tài)的?試題:
不能創(chuàng)建臨時變量(第三個變量),實現(xiàn)兩個數(shù)的交換。
`
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
``練習(xí)1:編寫代碼實現(xiàn):求?個整數(shù)存儲在內(nèi)存中的?進(jìn)制中1的個數(shù)。
#include <stdio.h>
int main()
{
int num = 10;
int count= 0;//計數(shù)
while(num)
{
if(num%2 == 1)
count++;
num = num/2;
}
printf("?進(jìn)制中1的個數(shù) = %d\n", count);
return 0;
}
//思考這樣的實現(xiàn)?式有沒有問題?
//?法2:
#include <stdio.h>
int main()
{
int num = -1;
int i = 0;
int count = 0;//計數(shù)
for(i=0; i<32; i++)
{
if( num & (1 << i) )
count++;
}
printf("?進(jìn)制中1的個數(shù) = %d\n",count);
return 0;
}
//思考還能不能更加優(yōu)化,這?必須循環(huán)32次的。
//?法3:
#include <stdio.h>
int main()
{
int num = -1;
int i = 0;
int count = 0;//計數(shù)
while(num)
{
count++;
num = num&(num-1);
}
printf("?進(jìn)制中1的個數(shù) = %d\n",count);
return 0;
練習(xí)2:?進(jìn)制位置0或者置1
編寫代碼將13?進(jìn)制序列的第5位修改為1,然后再改回0
13的2進(jìn)制序列: 00000000000000000000000000001101
將第5位置為1后:00000000000000000000000000011101
將第5位再置為0:00000000000000000000000000001101
#include <stdio.h>
int main()
{
int a = 13;
a = a | (1<<4);
printf("a = %d\n", a);
a = a & ~(1<<4);
printf("a = %d\n", a);
return 0;
}
單?操作符
單?操作符有這些:
!、++、–、&、、+、-、~ 、sizeof、(類型)
單?操作符的特點是只有?個操作數(shù),在單?操作符中只有&和沒有介紹,這2個操作符,我們放在學(xué)
習(xí)指針的時候?qū)W習(xí)。
7. 逗號表達(dá)式
1 exp1, exp2, exp3, …expN
逗號表達(dá)式,就是?逗號隔開的多個表達(dá)式
逗號表達(dá)式,從左向右依次執(zhí)?。整個表達(dá)式的結(jié)果是最后?個表達(dá)式的結(jié)果。
//代碼1
int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1);//逗號表達(dá)式
c是多少?
//代碼2
if (a =b + 1, c=a / 2, d > 0)
//代碼3
a = get_val();
count_val(a);
while (a > 0)
{
//業(yè)務(wù)處理
a = get_val();
count_val(a);
}
如果使?逗號表達(dá)式,改寫:
while (a = get_val(), count_val(a), a>0)
{
//業(yè)務(wù)處理
}
下標(biāo)訪問[]、函數(shù)調(diào)?()
8.1 [ ] 下標(biāo)引?操作符
操作數(shù):?個數(shù)組名 + ?個索引值
int arr[10];//創(chuàng)建數(shù)組
arr[9] = 10;//實?下標(biāo)引?操作符。
[ ]的兩個操作數(shù)是arr和9。
8.2 函數(shù)調(diào)?操作符
接受?個或者多個操作數(shù):第?個操作數(shù)是函數(shù)名,剩余的操作數(shù)就是傳遞給函數(shù)的參數(shù)。
void test1()
{
printf("hehe\n");
}
void test2(const char *str)
{
printf("%s\n", str);
}
int main()
{
test1(); //這?的()就是作為函數(shù)調(diào)?操作符。
test2("hello bit.");//這?的()就是函數(shù)調(diào)?操作符。
return 0;
}
結(jié)尾語
在探討愛情藝術(shù)與人際交往的智慧之余,讓我們切換到編程的世界。在C語言中,操作符同樣是構(gòu)建程序邏輯、實現(xiàn)數(shù)據(jù)交互的關(guān)鍵工具。例如:
算術(shù)操作符如同感情中的互動交流:加號(+)就像兩人之間的共享和增進(jìn);減號(-)類似在解決問題時彼此的支持與分擔(dān);乘號(*)猶如雙方情感的交織與深化;除法(/)則好比通過溝通與理解來化解分歧或達(dá)成共識;取余操作符(%)像是在日常生活的小細(xì)節(jié)中發(fā)現(xiàn)驚喜,找到彼此個性的獨特之處。
移位操作符則是更為精密的情感調(diào)控機(jī)制:左移操作符(<<)可以類比為共同成長中對對方潛力的激發(fā)與信任;右移操作符(>>)就如同在適當(dāng)?shù)臅r候給予對方空間和獨立性,讓關(guān)系得到平衡與舒展。文章來源:http://www.zghlxwxcb.cn/news/detail-823563.html
通過熟練掌握這些C語言操作符的運(yùn)用,程序員能夠更精準(zhǔn)地控制程序流程,正如在追求愛情的過程中,巧妙運(yùn)用各種“小手段”,有助于我們更好地建立和維護(hù)人際關(guān)系,從而抵達(dá)真愛的彼岸。文章來源地址http://www.zghlxwxcb.cn/news/detail-823563.html
到了這里,關(guān)于“探索C語言操作符的神秘世界:從入門到精通的全方位解析“的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!