?hi!我是漁火。今天開始跟我學(xué),從零開始學(xué)C語言(五)
今天我們來學(xué)習(xí)C語言中的運算符和表達符。C語言中賦值運算有”=“、”+=“、”-=“、”/=“和”%=“等。用賦值運算符將運算對象連接而成的表達式稱為賦值表達式。
最簡單的賦值運算符就是”=“,它的作用就是將一個數(shù)值賦給一個變量,也可以將一個表達式的值賦給一個變量,接下來看一個給變量賦值的例子:
int a,b,c=3;? 分析:定義a,b,c為整型變量,但只對c進行了賦值操作,c的值為3。
如果要對幾個變量賦予同一個初值,我們應(yīng)該這么寫:
int a=3,b=3,c=3;? 分析:表示a,b,c三個初值都是3。
在簡單賦值運算符加上算術(shù)運算符就構(gòu)成復(fù)合賦值運算符。
在 C語言中,賦值語句屬于表達語句。賦值表達式是由賦值運算符將一個變量和一個表達式連接起來的式子所組成。它的一般形式為:變量=表達式。由于賦值表達式的作用是將一個表達式的值賦給一個變量,因此賦值表達式具有計算和賦值的雙重功能。
注意:賦值運算符的左側(cè)必須是一個變量。
接下來我們看幾個賦值表達式:
v=4.0*PI*r*r*r/3.0; a=8+(y=9); c=(m+2)+(n+6);? 我們來了解下賦值表達式的執(zhí)行過程:1、計算賦值運算符右側(cè)表達式的值。2、將所計算的值給賦值運算符左側(cè)的變量。區(qū)分賦值表達式和賦值語句的方法是:賦值表達式的末尾沒有分號,而賦值語句的末尾必須有分號,在一個表達式中可以包含一個或多個賦值表達式,但絕不能包含賦值語句。
小白提示:
(1)如果”=“左右兩邊類型不同,系統(tǒng)會按照賦值類型轉(zhuǎn)換的原則將右邊的類型轉(zhuǎn)換成左邊的類型。
(2)賦值表達式的右邊也可以是一個賦值表達式。
C語言里的基本算術(shù)運算符包括加、減、乘、除和求余等運算,其中加、減、乘、除和求余運算均為雙目運算符,所謂雙目運算符是指運算時需要兩個操作數(shù)。
注意:求余運算要求參加運算的兩個運算對象都必須是整型,其結(jié)果也是整型。求余運算結(jié)果的符號與第一個操作數(shù)符號相同。
C語言里有兩個特殊運算符”++“和”--“。
(1)++自增運算符,為單目運算符,其功能是變量的值自加1。自增運算符有兩種使用形式:
前綴方式:用于變量前面,它是”先計算,后使用“,即先將x的值自加1,然后將x的值賦給變量a。
后綴方式:用于變量后面,它是”先使用,后計算“,即先將x的值賦給變量a,然后再將x的值自加1。
(2)--自減運算符,為單目運算符,其功能是使變量的值減一,使用方法和自增運算符相似。
注意:自增和自減運算符的操作對象只能是一個簡單變量,不能是常量或表達式。
C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性,單目運算符是右結(jié)合的,雙目運算符是左結(jié)合的。算術(shù)運算符的優(yōu)先級為:”++、--、-”>“*、/、%”>“、-”,即單目運算符的優(yōu)先級高于雙目運算符,雙目運算符中*,/,%的優(yōu)先級高于+、-。在優(yōu)先級的系統(tǒng)的情況下,按規(guī)定的“結(jié)合性”處理。
算術(shù)表達式是由運算符、運算對象和括號鏈接起來的式子,運算對象可以是常量、變量和函數(shù)等。通常數(shù)學(xué)表達式均可寫成C語言的算術(shù)表達式,但也有些數(shù)學(xué)表達式無法直接用C語言的算術(shù)表達式寫出,此時需要調(diào)用C語言的數(shù)學(xué)函數(shù)來實現(xiàn)。表達式計算后會得到一個確定的值和類型。
算術(shù)表達式使用注意:
1、表達式中的乘號不能省略,且表達式中的所有字符均應(yīng)寫在同一行上。
2、在表達式中還可以使用多層圓括號,但是要注意括號的配對。
接下來我們來看一道題目:輸入一個3位的正整數(shù),輸出其反序數(shù)(如123的反序數(shù)為321)
代碼如下:
#include?//2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { int num,a,b,c; num=789; printf("輸入的3位數(shù)為:%d ",num); a=num/100; b=(num-a*100)/10; c=num%10; printf("反序數(shù)是:%d%d%d ",c,b,a); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
運行結(jié)果如下:
?

C語言中逗號“,”,也是一種運算符,稱為逗號運算符,其功能是把多個表達式連接起來組成一個表達式,稱為逗號表達式。逗號表達式的一般形式位:表達式1,表達式2,···,表達式n。
(1)逗號表達式的執(zhí)行順序是:從左到右以此計算每個表達式的值,并把最后一個表達式的值作為整個逗號表達式的值。
(2)逗號運算符是雙目運算符,其優(yōu)先級最低,是左結(jié)合。
(3)并非所有出現(xiàn)逗號的地方都為逗號表達式。
接下來我們來看一個逗號表達式的應(yīng)用:
#include? 運行結(jié)果如下://2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { int x,y=8; float n=4; x=(y=y+2,y/n); printf("x=%d ",x); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
?

運算符sizeof用于計算數(shù)據(jù)類型所占的字節(jié)數(shù),它是一個單目運算符,優(yōu)先級高于雙目運算符,其格式如下:
(1)sizeof或sizeof表達式
(2)sizeif(數(shù)據(jù)類型名)
不同數(shù)據(jù)類型字數(shù)例子:
#include? 運行結(jié)果如下://2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { printf("char類型占%d字節(jié) ",sizeof(char)); printf("short int類型%d字節(jié) ",sizeof(short int)); printf("int類型占%d字節(jié) ",sizeof(int)); printf("float類型占%d字節(jié) ",sizeof(float)); printf("double類型占%d字節(jié) ",sizeof(double)); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
?

求字節(jié)數(shù)運算例子:
#include? 運行結(jié)果如下://2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { int x,y; x=sizeof(6+8.0); y=sizeof 6+8.0; printf("%d,%d,%d ",x,y,sizeof("china")); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
?

C語言規(guī)定,各種不同數(shù)據(jù)類型的數(shù)據(jù)在一起運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成相同類型的數(shù)據(jù)才能進行轉(zhuǎn)換。數(shù)據(jù)類型的轉(zhuǎn)換可以分為自動轉(zhuǎn)換和強制轉(zhuǎn)換。
我們來看一個強制轉(zhuǎn)換的例子:
#include? 運行結(jié)果如下://2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { int x=7,y=8; float u; u=(float)(x+y)/2; printf("u=%f ",u); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
?

注意:(1)需強制類型轉(zhuǎn)換中的表達式一定要括起來,否則只對緊隨括號后的量進行類型轉(zhuǎn)換。(2)強制類型轉(zhuǎn)換是一種不安全的轉(zhuǎn)換,如果是從高級類型的轉(zhuǎn)換成低級類型,則會損失數(shù)據(jù)的精度。(3)強制類型轉(zhuǎn)換并不該表表達式中變量的類型和值。
審核編輯:湯梓紅
?
?
評論