?hi!我是漁火。今天開始跟我學,從零開始學C語言(五)
今天我們來學習C語言中的運算符和表達符。C語言中賦值運算有”=“、”+=“、”-=“、”/=“和”%=“等。用賦值運算符將運算對象連接而成的表達式稱為賦值表達式。
最簡單的賦值運算符就是”=“,它的作用就是將一個數值賦給一個變量,也可以將一個表達式的值賦給一個變量,接下來看一個給變量賦值的例子:
int a,b,c=3;? 分析:定義a,b,c為整型變量,但只對c進行了賦值操作,c的值為3。
如果要對幾個變量賦予同一個初值,我們應該這么寫:
int a=3,b=3,c=3;? 分析:表示a,b,c三個初值都是3。
在簡單賦值運算符加上算術運算符就構成復合賦值運算符。
在 C語言中,賦值語句屬于表達語句。賦值表達式是由賦值運算符將一個變量和一個表達式連接起來的式子所組成。它的一般形式為:變量=表達式。由于賦值表達式的作用是將一個表達式的值賦給一個變量,因此賦值表達式具有計算和賦值的雙重功能。
注意:賦值運算符的左側必須是一個變量。
接下來我們看幾個賦值表達式:
v=4.0*PI*r*r*r/3.0; a=8+(y=9); c=(m+2)+(n+6);? 我們來了解下賦值表達式的執行過程:1、計算賦值運算符右側表達式的值。2、將所計算的值給賦值運算符左側的變量。區分賦值表達式和賦值語句的方法是:賦值表達式的末尾沒有分號,而賦值語句的末尾必須有分號,在一個表達式中可以包含一個或多個賦值表達式,但絕不能包含賦值語句。
小白提示:
(1)如果”=“左右兩邊類型不同,系統會按照賦值類型轉換的原則將右邊的類型轉換成左邊的類型。
(2)賦值表達式的右邊也可以是一個賦值表達式。
C語言里的基本算術運算符包括加、減、乘、除和求余等運算,其中加、減、乘、除和求余運算均為雙目運算符,所謂雙目運算符是指運算時需要兩個操作數。
注意:求余運算要求參加運算的兩個運算對象都必須是整型,其結果也是整型。求余運算結果的符號與第一個操作數符號相同。
C語言里有兩個特殊運算符”++“和”--“。
(1)++自增運算符,為單目運算符,其功能是變量的值自加1。自增運算符有兩種使用形式:
前綴方式:用于變量前面,它是”先計算,后使用“,即先將x的值自加1,然后將x的值賦給變量a。
后綴方式:用于變量后面,它是”先使用,后計算“,即先將x的值賦給變量a,然后再將x的值自加1。
(2)--自減運算符,為單目運算符,其功能是使變量的值減一,使用方法和自增運算符相似。
注意:自增和自減運算符的操作對象只能是一個簡單變量,不能是常量或表達式。
C語言規定了運算符的優先級和結合性,單目運算符是右結合的,雙目運算符是左結合的。算術運算符的優先級為:”++、--、-”>“*、/、%”>“、-”,即單目運算符的優先級高于雙目運算符,雙目運算符中*,/,%的優先級高于+、-。在優先級的系統的情況下,按規定的“結合性”處理。
算術表達式是由運算符、運算對象和括號鏈接起來的式子,運算對象可以是常量、變量和函數等。通常數學表達式均可寫成C語言的算術表達式,但也有些數學表達式無法直接用C語言的算術表達式寫出,此時需要調用C語言的數學函數來實現。表達式計算后會得到一個確定的值和類型。
算術表達式使用注意:
1、表達式中的乘號不能省略,且表達式中的所有字符均應寫在同一行上。
2、在表達式中還可以使用多層圓括號,但是要注意括號的配對。
接下來我們來看一道題目:輸入一個3位的正整數,輸出其反序數(如123的反序數為321)
代碼如下:
#include?//2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { int num,a,b,c; num=789; printf("輸入的3位數為:%d ",num); a=num/100; b=(num-a*100)/10; c=num%10; printf("反序數是:%d%d%d ",c,b,a); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
運行結果如下:
?
C語言中逗號“,”,也是一種運算符,稱為逗號運算符,其功能是把多個表達式連接起來組成一個表達式,稱為逗號表達式。逗號表達式的一般形式位:表達式1,表達式2,···,表達式n。
(1)逗號表達式的執行順序是:從左到右以此計算每個表達式的值,并把最后一個表達式的值作為整個逗號表達式的值。
(2)逗號運算符是雙目運算符,其優先級最低,是左結合。
(3)并非所有出現逗號的地方都為逗號表達式。
接下來我們來看一個逗號表達式的應用:
#include? 運行結果如下://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用于計算數據類型所占的字節數,它是一個單目運算符,優先級高于雙目運算符,其格式如下:
(1)sizeof或sizeof表達式
(2)sizeif(數據類型名)
不同數據類型字數例子:
#include? 運行結果如下://2023.1.29 漁火 Linux迷 www.linuxmi.com int main() { printf("char類型占%d字節 ",sizeof(char)); printf("short int類型%d字節 ",sizeof(short int)); printf("int類型占%d字節 ",sizeof(int)); printf("float類型占%d字節 ",sizeof(float)); printf("double類型占%d字節 ",sizeof(double)); //2023.1.29 漁火 Linux迷 www.linuxmi.com return 0; }
?
求字節數運算例子:
#include? 運行結果如下://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語言規定,各種不同數據類型的數據在一起運算時,不同類型的數據要先轉換成相同類型的數據才能進行轉換。數據類型的轉換可以分為自動轉換和強制轉換。
我們來看一個強制轉換的例子:
#include? 運行結果如下://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)需強制類型轉換中的表達式一定要括起來,否則只對緊隨括號后的量進行類型轉換。(2)強制類型轉換是一種不安全的轉換,如果是從高級類型的轉換成低級類型,則會損失數據的精度。(3)強制類型轉換并不該表表達式中變量的類型和值。
審核編輯:湯梓紅
?
?
評論
查看更多