第3章C語言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式講解_第1頁
第3章C語言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式講解_第2頁
第3章C語言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式講解_第3頁
第3章C語言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式講解_第4頁
第3章C語言的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式講解_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

任亞茹2021年9?13?C語言程序設(shè)計(jì)—C語言的數(shù)據(jù)類型、

運(yùn)算符和表達(dá)式主

內(nèi)

容C語言的編程規(guī)范1C語言的數(shù)據(jù)類型2C語言變量的初始化34C語言的運(yùn)算符與表達(dá)式一、C語言的編程規(guī)范(一)代碼中的編程規(guī)范俗話說,“沒有規(guī)矩,不成方圓。”雖然在C語言中編寫代碼是自由的,但是為了使編寫的代碼具有通用、友好的可讀性,應(yīng)該盡量按照一定的規(guī)范編寫所設(shè)計(jì)的程序。1.代碼縮進(jìn)代碼縮進(jìn)統(tǒng)一為4個(gè)字符。不采用空格,而用<Tab>鍵制表位。一、C語言的編程規(guī)范(一)代碼中的編程規(guī)范2.變量、常量命名規(guī)范常量命名統(tǒng)一為大寫格式。如果是成員變量,均以m_開始。如果是普通變量,取與實(shí)際意義相關(guān)的名稱,要在前面添加類型的首字母,并且名稱的首字母要大寫。如果是指針,則為其標(biāo)識符前添加p字符,并且名稱首字母要大寫。例如:一、C語言的編程規(guī)范(一)代碼中的編程規(guī)范3.函數(shù)的命名規(guī)范在定義函數(shù)時(shí),函數(shù)名的首字母要大寫,其后的字母大小寫混合。例如:4.注釋盡量采用行注釋。如果行注釋與代碼處于一行,則注釋應(yīng)位于代碼右方。如果連續(xù)出現(xiàn)多個(gè)行注釋,并且代碼較短,則應(yīng)對齊注釋。例如:一、C語言的編程規(guī)范(二)關(guān)鍵字C語言中有32個(gè)關(guān)鍵字,如下表所示:一、C語言的編程規(guī)范(三)標(biāo)識符在C語言中為了在程序的運(yùn)行過程中可以使用變量、常量、函數(shù)、數(shù)組等,就要為這些形式設(shè)定一個(gè)名稱,而設(shè)定的名稱就是所謂的標(biāo)識符。C語言標(biāo)識符應(yīng)該遵守的一些命名規(guī)則。1.所有標(biāo)識符必須由字母或下劃線開頭,而不能使用數(shù)字或者符號作為開頭一、C語言的編程規(guī)范(三)標(biāo)識符2.在設(shè)定標(biāo)識符時(shí),除開頭外,其他位置都可以由字母、下劃線或數(shù)字組成3.英文字母的大小寫代表不同的標(biāo)識符,也就是說,在C語言中是區(qū)分大小寫字母的一、C語言的編程規(guī)范(三)標(biāo)識符4.標(biāo)識符不能是關(guān)鍵字。關(guān)鍵字是定義一種類型使用的字符,標(biāo)識符不能使用。例如,定義整型數(shù)據(jù)時(shí),系統(tǒng)使用了int關(guān)鍵字,因此用戶定義的標(biāo)識符就不能再使用int,如果使用會(huì)提示編譯錯(cuò)誤。但將其中標(biāo)識符的字母改成大寫字母,就可以通過編譯。一、C語言的編程規(guī)范(三)標(biāo)識符5.標(biāo)識符的命名最好具有相關(guān)的含義。將標(biāo)識符設(shè)定成有一定含義的名稱,不但可以方便程序編寫,并且在以后回顧程序時(shí),會(huì)更容易讀懂。6.

ANSI標(biāo)準(zhǔn)規(guī)定,標(biāo)識符可以為任意長度,但外部名必須至少能由前6個(gè)字符唯一地區(qū)分.這是因?yàn)槟承┚幾g程序(如IBMPC的MSC)僅能識別前6個(gè)字符。二、C語言的數(shù)據(jù)類型程序在運(yùn)行時(shí)要做的內(nèi)容就是處理數(shù)據(jù)。程序要解決復(fù)雜的問題,就要處理不同的數(shù)據(jù)。不同的數(shù)據(jù)都是以自己本身的一種特定形式存在的(如整型、字符型、實(shí)型等),不同的數(shù)據(jù)類型占用不同的存儲(chǔ)空間,C語言中有多種不同的數(shù)據(jù)類型,如右圖。二、C語言的數(shù)據(jù)類型(一)常量與變量1.常量在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。根據(jù)書寫方式,常量可分為直接常量和符號常量。(1)直接常量:如4、23;1.23;'a'、'b';''CHINA''等(2)符號常量:用#define指令,指定一個(gè)標(biāo)識符代表一個(gè)常量。例如,#definePI3.1415926//定義符號常量PI經(jīng)過以上定義,本文件中從此行開始,所有的PI都代表常量3.1415926。說明:標(biāo)識符是用來標(biāo)識變量名、符號常量名、宏名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字、下畫線3種字符組成,且第一個(gè)字符必須是字母或下畫線。二、C語言的數(shù)據(jù)類型(一)常量與變量2.變量在程序執(zhí)行過程中,其值可以改變的量稱為變量。變量必須“先定義,后使用”。定義變量后,編譯系統(tǒng)為每個(gè)變量名分配對應(yīng)的內(nèi)存地址,即一個(gè)變量名對應(yīng)一個(gè)存儲(chǔ)單元。從變量中取值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。變量名和變量值是兩個(gè)不同的概念,應(yīng)加以區(qū)分。二、C語言的數(shù)據(jù)類型(二)整型數(shù)據(jù)

二、C語言的數(shù)據(jù)類型(二)整型數(shù)據(jù)2.整型變量(1)整型變量的分類歸納起來,有10種整型變量,在VC++系統(tǒng)中對應(yīng)的數(shù)值范圍如下:

二、C語言的數(shù)據(jù)類型(二)整型數(shù)據(jù)2.整型變量(2)整型變量在內(nèi)存中的存儲(chǔ)形式(以單字節(jié)整型數(shù)據(jù)為例)

有符號的數(shù)值在計(jì)算機(jī)系統(tǒng)(包括嵌入式系統(tǒng))內(nèi)存中是以補(bǔ)碼形式存放的。對于有符號的整數(shù):正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼=2n-(負(fù)數(shù)的絕對值),其中n是二進(jìn)制位數(shù),2n代表n位二進(jìn)制數(shù)的模。例如8位二進(jìn)制整數(shù),[-1]補(bǔ)=28-|-1|=0xff,[-128]補(bǔ)=28-|-128|=0x80。從表中可以看出,對于有符號的單字節(jié)整型數(shù)據(jù),

0~127對應(yīng)的二進(jìn)制數(shù)最高位為0,表示為正數(shù);

-1~-128對應(yīng)的二進(jìn)制數(shù)最高位為1,表示為負(fù)數(shù)。二、C語言的數(shù)據(jù)類型(二)整型數(shù)據(jù)2.整型變量(3)定義整型變量的方法1)若定義一個(gè)變量,定義格式為:類型標(biāo)識符變量名;

例如:inti;//定義有符號基本整型變量iunsignedintj;//定義無符號基本整型變量j2)若同時(shí)定義多個(gè)同類型的變量,定義格式為:類型標(biāo)識符變量名1,變量名2,變量名3,…;

例如:inti,j,k;//同時(shí)定義三個(gè)基本整型變量i、j、k定義變量后,系統(tǒng)將根據(jù)變量的類型給變量分配對應(yīng)大小的內(nèi)存空間,用于存儲(chǔ)該變量。例如:shortinti;//定義短整型變量ii=10;//給變量i賦值二、C語言的數(shù)據(jù)類型(三)字符型數(shù)據(jù)1.字符常量

C語言中,用一對單撇號括起來的一個(gè)字符,稱為字符常量,例如:'A','6','+'等。還有一種以“\”開頭的字符序列,稱為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符及其含義如下:二、C語言的數(shù)據(jù)類型(三)字符型數(shù)據(jù)2.字符變量字符變量用來存放字符,并且只能存放1個(gè)字符,而不可以存放由若干個(gè)字符組成的字符串。字符變量的類型標(biāo)識符是char,定義字符變量的格式與整型變量相同。例如:charc1,c2;//定義字符變量c1、c2c1='a';c2='b';//給變量c1賦值'a',變量c2賦值’b’3.字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。字符型數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是該字符對應(yīng)的ASCII碼。

字符型數(shù)據(jù)的存儲(chǔ)形式與單字節(jié)整型數(shù)據(jù)相同。因此,字符型可以當(dāng)作單字節(jié)整型。二、C語言的數(shù)據(jù)類型(三)字符型數(shù)據(jù)【例1.3】向字符變量賦整數(shù)。

#include<stdio.h>intmain(void){charc1;//定義字符變量

c1=97;//給變量c1賦整數(shù)(將ASCII碼值97賦給變量c1)

printf("%c\n",c1);//以字符形式輸出變量c1的值(ASCII碼值對應(yīng)的字符)

printf("%d\n",c1);//以整數(shù)形式輸出變量c1的值(字符對應(yīng)的ASCII碼)}二、C語言的數(shù)據(jù)類型(三)字符型數(shù)據(jù)【例1.4】輸出給定小寫字母對應(yīng)的大寫字母。#include<stdio.h>intmain(void){charc1,c2;//定義字符變量

c1='a';c2='b';//給字符變量賦字符常量

c1=c1-32;c2=c2-32;//將字符變量對應(yīng)的ASCII碼值更新

printf("%c,%c\n",c1,c2);//以字符形式輸出變量c1和c2的值}二、C語言的數(shù)據(jù)類型(三)字符型數(shù)據(jù)4、字符串常量字符串常量是由一對雙撇號括起的字符序列。例如:“CHINA”,“Cprogram”,“a”,“$12.5”等都是合法的字符串常量。字符串常量和字符常量是不同的量,他們之間主要有以下區(qū)別:(1)字符常量由單撇號括起來,字符串常量由雙撇號括起來。(2)字符常量只能是一個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。(3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。在C語言中沒有專門的字符串變量。但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量,這將在3.3節(jié)中介紹。(4)字符常量占用一個(gè)字節(jié)空間,而字符串常量占用的字節(jié)數(shù)取決于串中字符的個(gè)數(shù)。例如:"CHINA"在內(nèi)存中的存儲(chǔ)情況:字符串末尾的'\0'是系統(tǒng)自動(dòng)加上去的“字符串結(jié)束標(biāo)志”。其ASCII碼為0,表示空操作,既不引起任何控制動(dòng)作,也不可顯示。因此字符串常量"CHINA"在內(nèi)存中占用6個(gè)字節(jié)。【思考】字符常量'a'和字符串常量"a"有何區(qū)別?二、C語言的數(shù)據(jù)類型(四)實(shí)型數(shù)據(jù)1、實(shí)型常量實(shí)型常量也稱實(shí)數(shù),在C語言中,實(shí)數(shù)有兩種表示形式:(1)十進(jìn)制小數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意,必須要有小數(shù)點(diǎn))。0.123、123.、123.0、0.0都是十進(jìn)制小數(shù)形式。(2)指數(shù)形式。如123e3或123E3都代表123×103。要注意字母e(或E)之前必須要有數(shù)字,且e后面的指數(shù)必須為整數(shù),如e2、4e2.5、.e3、e都不是合法的指數(shù)形式。

一個(gè)實(shí)數(shù)可以有多種指數(shù)表示形式。例如123.456可以表示為12345.6e-2、1234.56e-1、123.456e0、12.3456e1、1.23456e2、0.123456e3、0.0123456e4等形式,其中1.23456e2成為“規(guī)范化的指數(shù)形式”,即在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)前有且只有一位非零數(shù)字。在程序中以指數(shù)形式輸出一個(gè)實(shí)數(shù)時(shí),會(huì)以規(guī)范化的指數(shù)形式輸出??梢?,在實(shí)數(shù)123.456的多種指數(shù)表示形式中,小數(shù)點(diǎn)的位置是可以在123456幾個(gè)數(shù)字之間、之前或之后(加0)浮動(dòng)的,只要在小數(shù)點(diǎn)位置浮動(dòng)的同時(shí)改變指數(shù)的值,就可以保證它的值不變。由于小數(shù)點(diǎn)的位置可以浮動(dòng),因此實(shí)數(shù)的指數(shù)形式又稱為浮點(diǎn)數(shù)。二、C語言的數(shù)據(jù)類型(四)實(shí)型數(shù)據(jù)2、實(shí)型變量根據(jù)實(shí)型數(shù)據(jù)的數(shù)值范圍和精度,實(shí)型變量的類型主要有單精度(float)型和雙精度(double)型。需要注意:實(shí)型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)精度有限,不可能得到完全精確的數(shù)值。實(shí)型數(shù)據(jù)的類型及數(shù)值范圍。二、C語言的數(shù)據(jù)類型(四)實(shí)型數(shù)據(jù)2、實(shí)型變量【例1.5】實(shí)型變量的定義、賦值和輸出。#include<stdio.h>intmain(void){ floatx;//定義實(shí)型變量xx=12.3;//將實(shí)型常數(shù)12.3賦給變量xprintf("%f\n",x);//以小數(shù)形式輸出變量x的數(shù)值

printf("%e\n",x);//以指數(shù)形式輸出變量x的數(shù)值}三、C語言變量的初始化C語言允許在定義變量的同時(shí),對變量賦初值,即變量的初始化。例如:inta=3;//定義整型變量a,并賦初值3floatb=1.23;//定義實(shí)型變量b,并賦初值1.23charc='a';//定義字符變量c,并賦初值'a’當(dāng)一次定義同類型的多個(gè)變量時(shí),可以給全部變量或部分變量賦初值。inta,b,c=5;//定義a、b、c三個(gè)整型變量,只給c賦初值5inta=1,b=2,c=3;//定義a、b、c三個(gè)整型變量,并賦不同的初值inta=3,b=3,c=3;//定義a、b、c三個(gè)整型變量,并賦相同的初值3注意,對3個(gè)變量賦相同的初值3時(shí),不能寫成:inta=b=c=3;三、C語言變量的初始化常變量在定義變量并對變量初始化時(shí),如果加上關(guān)鍵字const,則變量的值在程序運(yùn)行期間不再改變,這種變量稱為常變量(constantvariable),也稱為只讀變量。例如:constinta=5;//用const聲明整型變量a為常變量,其值始終是5。如前所述,定義變量后,編譯系統(tǒng)為每個(gè)變量名分配對應(yīng)的內(nèi)存單元。一般變量對應(yīng)內(nèi)存單元中的值是可以變化的,但常變量對應(yīng)內(nèi)存單元中的值被限定不變,因此常變量也被稱為只讀變量。另外,需要區(qū)分用#define指令定義的符號常量和用const定義的常變量。符號常量只是用一個(gè)符號代表一個(gè)常量,它沒有類型,在內(nèi)存中并不存在符號常量名對應(yīng)的存儲(chǔ)單元。而常變量具有變量的特征,它具有類型,在內(nèi)存中存在與變量名對應(yīng)的存儲(chǔ)單元。四、C語言的運(yùn)算符與表達(dá)式(一)表達(dá)式表達(dá)式是C語言的主體。在C語言中,表達(dá)式由操作符和操作數(shù)組成。最簡單的表達(dá)式可以只含有一個(gè)操作數(shù)。根據(jù)表達(dá)式含有的操作符的個(gè)數(shù),可以把表達(dá)式分為簡單表達(dá)式和復(fù)雜表達(dá)式兩種:簡單表達(dá)式是只含有一個(gè)操作符的表達(dá)式,而復(fù)雜表達(dá)式是包含兩個(gè)或兩個(gè)以上操作符的表達(dá)式。下面通過幾個(gè)表達(dá)式進(jìn)行觀察:5+5iNumber+9iBase+(iPay*iDay)表達(dá)式本身什么事情也不做,只是返回結(jié)果值。在程序不對返回的結(jié)果值進(jìn)行任何操作的情況下,返回的結(jié)果值不起任何作用,也就是忽略返回的值。四、C語言的運(yùn)算符與表達(dá)式(一)表達(dá)式表達(dá)式產(chǎn)生作用有兩種情況:放在賦值語句的右側(cè)(下面要講解)。放在函數(shù)的參數(shù)中(在“函數(shù)”章進(jìn)行講解)。表達(dá)式返回的結(jié)果值是有類型的。表達(dá)式隱含的數(shù)據(jù)類型取決于組成表達(dá)式的變量和常量的類型。說明:每個(gè)表達(dá)式的返回值都具有邏輯性。如果返回值是非零的,那么該表達(dá)式返回真值,否則返回假值。通過這個(gè)特點(diǎn),可以將表達(dá)式放在用于控制程序流程的語句中,這就構(gòu)建了條件表達(dá)式。四、C語言的運(yùn)算符與表達(dá)式(一)表達(dá)式#include<stdio.h>intmain(){ intiNumber1,iNumber2,iNumber3; /*聲明變量*/ iNumber1=3; /*為變量賦值*/ iNumber2=7; printf("thefirstnumberis:%d\n",iNumber1);/*顯示變量值*/ printf("thesecondnumberis:%d\n",iNumber2); iNumber3=iNumber1+10; /*表達(dá)式中利用變量iNumber1加上一個(gè)常量*/ printf("thefirstnumberadd10is:%d\n",iNumber3);/*顯示iNumber3的值*/ iNumber3=iNumber2+10; /*表達(dá)式中利用變量iNumber2加上一個(gè)常量*/ printf("thesecondnumberadd10is:%d\n",iNumber3);/*顯示iNumber3的值*/ iNumber3=iNumber1+iNumber2; /*表達(dá)式中是兩個(gè)變量進(jìn)行計(jì)算*/ printf("theresultnumberoffirstaddsecondis:%d\n",iNumber3);/*將計(jì)算結(jié)果輸出*/ return0;/*程序結(jié)束*/}四、C語言的運(yùn)算符與表達(dá)式(二)算術(shù)運(yùn)算符及其表達(dá)式1、基本的算術(shù)運(yùn)算符【例1.7】將兩位十進(jìn)制整數(shù)的十位數(shù)和個(gè)位數(shù)分離。#include<stdio.h>intmain(void){ inta=23; intb,c; b=a/10; //求變量a的十位數(shù)

c=a%10; //求變量a的個(gè)位數(shù)

printf("a=%d\n",a);//輸出變量a的值

printf("十位=%d\n",b);//輸出變量a對應(yīng)的十位數(shù)

printf("個(gè)位=%d\n",c);//輸出變量a對應(yīng)的個(gè)位數(shù)}四、C語言的運(yùn)算符與表達(dá)式(二)算術(shù)運(yùn)算符及其表達(dá)式1、基本的算術(shù)運(yùn)算符【思考與實(shí)驗(yàn)】在嵌入式軟件設(shè)計(jì)中,有時(shí)需要將多位十進(jìn)制數(shù)的各位數(shù)字分別送至不同位數(shù)碼管顯示,請利用/和%運(yùn)算符將一個(gè)3位十進(jìn)制整數(shù)的百位、十位、個(gè)位分離。inti=123;inta,b,c;a=i/100;//百位b=i/10%10;//十位c=i%10;//個(gè)位四、C語言的運(yùn)算符與表達(dá)式(二)算術(shù)運(yùn)算符及其表達(dá)式2、自增、自減運(yùn)算符自增運(yùn)算符++:使變量的值自增1,相當(dāng)于i=i+1。自減運(yùn)算符--:使變量的值自減1,相當(dāng)于i=i-1。有以下4種形式的表達(dá)式:

i++表達(dá)式先用i的值,然后對i的值加1(先用后加)

++i先對i的值加1,然后表達(dá)式用i加1的值(先加后用)

i--表達(dá)式先用i的值,然后對i的值減1(先用后減)

--i先對i的值減1,然后表達(dá)式用i減1的值(先減后用)四、C語言的運(yùn)算符與表達(dá)式(二)算術(shù)運(yùn)算符及其表達(dá)式2、自增、自減運(yùn)算符【例題】自增、自減運(yùn)算符的應(yīng)用#include<stdio.h>intmain(void){inti=3,j=3,k=3,x=3; printf("%d\t",i++);printf("i=%d\n",i);printf("%d\t",++j);printf("j=%d\n",j);printf("%d\t",k--);printf("k=%d\n",k);printf("%d\t",--x);printf("x=%d\n",x);}可見,由自增(自減)運(yùn)算符構(gòu)成不同形式的表達(dá)式時(shí),對變量而言,自增1(自減1)都具有相同的效果,但對表達(dá)式而言卻有著不同的值。說明:(1) 自增、自減運(yùn)算符只能用于變量,不能用于常量或表達(dá)式。如5++或(a+b)++都是不合法的。(2) 自增、自減運(yùn)算符常用在循環(huán)語句中,使循環(huán)變量自動(dòng)加1、減1;也常用于指針變量,使指針指向下一個(gè)地址。這將在后續(xù)章節(jié)中介紹。四、C語言的運(yùn)算符與表達(dá)式(二)算術(shù)運(yùn)算符及其表達(dá)式3、算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性用算術(shù)運(yùn)算符和括號將運(yùn)算對象(常量、變量或表達(dá)式等)連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達(dá)式。例如:a+b*c-5/2+'a'。C語言規(guī)定了運(yùn)算符的優(yōu)先級和結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級高低次序執(zhí)行,例如表達(dá)式x-y*z相當(dāng)于x-(y*z)。如果在一個(gè)運(yùn)算對象兩側(cè)的運(yùn)算符的優(yōu)先級相同,則按照規(guī)定的“結(jié)合方向(結(jié)合性)”處理。算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笙蛴遥ㄗ蠼Y(jié)合性)”,即先左后右。因此表達(dá)式a+b-c相當(dāng)于(a+b)-c。附錄C給出了C語言運(yùn)算符的優(yōu)先級和結(jié)合性,供查詢參考。四、C語言的運(yùn)算符與表達(dá)式(三)算術(shù)運(yùn)算符及其表達(dá)式3、

強(qiáng)制類型轉(zhuǎn)換運(yùn)算符及其表達(dá)式可以利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需要的類型。強(qiáng)制類型轉(zhuǎn)換表達(dá)式的一般形式:(類型標(biāo)識符)(表達(dá)式)例如:(int)i將i轉(zhuǎn)換為整型(float)(x+y)將x+y的結(jié)果轉(zhuǎn)換為float型

(int)x+y將x轉(zhuǎn)換成整型后,再與y相加四、C語言的運(yùn)算符與表達(dá)式(三)算術(shù)運(yùn)算符及其表達(dá)式3、

強(qiáng)制類型轉(zhuǎn)換運(yùn)算符及其表達(dá)式【例題】強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的應(yīng)用:將實(shí)型數(shù)據(jù)轉(zhuǎn)換為整型。#include<stdio.h>intmain(void){inti;//定義整型變量ifloatx=2.4F;//定義實(shí)型變量x,并賦初值

i=(int)x;//將實(shí)型變量x強(qiáng)制轉(zhuǎn)換為int型

printf("x=%f,i=%d\n",x,i);}四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式在聲明變量時(shí),可以為其賦一個(gè)初值,就是將一個(gè)常數(shù)或者一個(gè)表達(dá)式的結(jié)果賦值給一個(gè)變量,變量中保存的內(nèi)容就是這個(gè)常量或者賦值語句中表達(dá)式的值。這就是為變量賦初值。1.變量賦值為常數(shù)一般的形式是:類型變量名=常數(shù);其中的變量名也稱為變量的標(biāo)識符。通過變量賦初值的一般形式,以下是相關(guān)的代碼實(shí)例:charcChar='A';intiFirst=100;floatfPlace=1450.78f;四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式2.變量賦值為賦值表達(dá)式賦值語句把一個(gè)表達(dá)式的結(jié)果值賦給一個(gè)變量。一般的形式是:類型變量名=表達(dá)式;可以看到,其一般形式與常數(shù)賦值的一般形式是相似的,例如:intiAmount=1+2;floatfPrice=fBase+Day*3;在上面的舉例中,得到賦值的變量iAmount和fPrice稱為左值,因?yàn)樗霈F(xiàn)的位置在賦值語句的左側(cè)。產(chǎn)生值的表達(dá)式稱為右值,因?yàn)樗霈F(xiàn)的位置在表達(dá)式的右側(cè)。注意:這是一個(gè)重要的區(qū)別,并不是所有的表達(dá)式都可以作為左值,如常數(shù)只可以作為右值。四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式【例】為變量賦初值。為變量賦初值的操作是編程時(shí)常見的操作。在本實(shí)例中,模擬鐘點(diǎn)工的計(jì)費(fèi)情況,使用賦值語句和表達(dá)式得出鐘點(diǎn)工工作8個(gè)小時(shí)后所得的薪水。#include<stdio.h>intmain(){ intiHoursWorded=8;/*定義變量,為變量賦初值。表示工作時(shí)間*/ intiHourlyRate; /*聲明變量,表示一個(gè)小時(shí)的薪水*/ intiGrossPay; /*聲明變量,表示得到的工資*/ iHourlyRate=13; /*為變量賦值*/ iGrossPay=iHoursWorded*iHourlyRate; /*將表達(dá)式的結(jié)果賦值給變量*/ printf("TheHoursWordedis:%d\n",iHoursWorded); /*顯示工作時(shí)間變量*/ printf("TheHourlyRateis:%d\n",iHourlyRate);/*顯示一個(gè)小時(shí)的薪水*/ printf("TheGrossPayis:%d\n",iGrossPay);/*顯示工作所得的工資*/ return0; /*程序結(jié)束*/}四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式2.復(fù)合的賦值運(yùn)算符及其表達(dá)式在簡單賦值運(yùn)算符“=”之前加上其他運(yùn)算符,可構(gòu)成復(fù)合的賦值運(yùn)算符。

a+=3等價(jià)于a=a+3a-=3等價(jià)于a=a-3a*=3等價(jià)于a=a*3a/=3等價(jià)于a=a/3a%=3等價(jià)于a=a%3a*=b+2等價(jià)于a=a*(b+2)四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換如果賦值運(yùn)算符“=”兩側(cè)的數(shù)據(jù)類型不一致,但同為數(shù)值型數(shù)據(jù),在賦值時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。下面介紹3種常見的情況。(1)將整型數(shù)據(jù)賦給整型變量【例1.10】將無符號整型數(shù)據(jù)賦給有符號整型變量。#include<stdio.h>intmain(void){ unsignedchara=255; signedcharb; b=a; printf("a=%d\n",a); printf("b=%d\n",b);}正數(shù)變成了負(fù)數(shù)

四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(1)將整型數(shù)據(jù)賦給整型變量【例1.11】將有符號整型數(shù)據(jù)賦給無符號整型變量。#include<stdio.h>intmain(void){ signedchara=-1; unsignedcharb; b=a; printf("a=%d\n",a); printf("b=%d\n",b);}負(fù)數(shù)變成了正數(shù)

由以上運(yùn)行結(jié)果可以看出,無符號的整型與有符號的整型之間相互賦值時(shí),容易出錯(cuò),其原因是負(fù)數(shù)在內(nèi)存中是以補(bǔ)碼形式存儲(chǔ)的,如-1的補(bǔ)碼是255(0xff)四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(1)將整型數(shù)據(jù)賦給整型變量【例1.12】將短字節(jié)整型數(shù)據(jù)賦給長字節(jié)整型變量。#include<stdio.h>intmain(void){ unsignedchara=255; unsignedintb; b=a; printf("a=%d\n",a); printf("b=%d\n",b);}四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(1)將整型數(shù)據(jù)賦給整型變量【例1.13】將長字節(jié)整型數(shù)據(jù)賦給短字節(jié)整型變量。#include<stdio.h>intmain(void){ unsignedchara=255,b=1; unsignedcharc; c=a+b; printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c);}

有誤!如何解決?四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(1)將整型數(shù)據(jù)賦給整型變量【例1.13】將長字節(jié)整型數(shù)據(jù)賦給短字節(jié)整型變量。#include<stdio.h>intmain(void){unsignedchara=255,b=1;unsignedcharc;c=a+b;printf("a=%d\n",a); printf("b=%d\n",b); printf("c=%d\n",c);}

有誤!如何解決?四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(2)將實(shí)型數(shù)據(jù)賦給整型變量【例1.14】將實(shí)型數(shù)據(jù)賦給整型變量。#include<stdio.h>intmain(void){floata=1234.567F;intb;b=a;printf("a=%f\n",a); printf("b=%d\n",b);}四、C語言的運(yùn)算符與表達(dá)式(四)賦值運(yùn)算符與賦值表達(dá)式3.類型轉(zhuǎn)換(3)將整型數(shù)據(jù)賦給實(shí)型變量【例1.15】將整型數(shù)據(jù)賦給實(shí)型變量。#include<stdio.h>intmain(void){inta=1234;floatb;b=a;printf("a=%d\n",a); printf("b=%f\n",b);}通過上述例題可以看出,在賦值運(yùn)算中,需要根據(jù)數(shù)據(jù)的類型和數(shù)值的范圍為變量指定合適的類型,必要時(shí)還需要借助強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,以防出錯(cuò)。

四、C語言的運(yùn)算符與表達(dá)式(五)關(guān)系運(yùn)算符及其表達(dá)式1、關(guān)系運(yùn)算符及其優(yōu)先級次序關(guān)系運(yùn)算符包括大于運(yùn)算符、大于等于運(yùn)算符、小于運(yùn)算符、小于等于運(yùn)算符、等于運(yùn)算符、不等于運(yùn)算符。表中列出了這6種關(guān)系運(yùn)算符所對應(yīng)的符號。四、C語言的運(yùn)算符與表達(dá)式(五)關(guān)系運(yùn)算符及其表達(dá)式1、關(guān)系運(yùn)算符及其優(yōu)先級次序四、C語言的運(yùn)算符與表達(dá)式(五)關(guān)系運(yùn)算符及其表達(dá)式2、關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。

關(guān)系表達(dá)式的值是一個(gè)邏輯值:“真”或“假”。例如關(guān)系表達(dá)式“5==3”的值為“假”,“5>=0”的值為“真”。關(guān)系運(yùn)算結(jié)果,以“1”代表“真”,以“0”代表“假”。若a=3,b=2,c=1,則:四、C語言的運(yùn)算符與表達(dá)式(五)關(guān)系運(yùn)算符及其表達(dá)式2、關(guān)系表達(dá)式關(guān)系運(yùn)算符用于對兩個(gè)表達(dá)式的值進(jìn)行比較,返回一個(gè)真值或者假值。返回真值還是假值取決于表達(dá)式中的值和所用的運(yùn)算符。其中真值為1,假值為0,真值表示指定的關(guān)系成立,假值則表示指定的關(guān)系不正確。例如:7>5 /*因?yàn)?大于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/7>=5 /*因?yàn)?大于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/7<5 /*因?yàn)?大于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7<=5 /*因?yàn)?大于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7==5 /*因?yàn)?不等于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7!=5 /*因?yàn)?不等于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/關(guān)系運(yùn)算符通常用來構(gòu)造條件表達(dá)式,用在程序流程控制語句中,例如if語句是用于判斷條件而執(zhí)行語句塊,在其中使用關(guān)系表達(dá)式作為判斷條件,如果關(guān)系表達(dá)式返回的是真值則執(zhí)行下面的語句塊,如果為假值就不去執(zhí)行。代碼如下:if(Count<10){ … /*判斷條件為真值,執(zhí)行代碼*/}其中,if(iCount<10)就是判斷iCount小于10這個(gè)關(guān)系是否成立,如果成立則為真,如果不成立則為假。四、C語言的運(yùn)算符與表達(dá)式(五)關(guān)系運(yùn)算符及其表達(dá)式2、關(guān)系表達(dá)式關(guān)系運(yùn)算符的結(jié)合性都是自左向右的。使用關(guān)系運(yùn)算符的時(shí)候常常會(huì)判斷兩個(gè)表達(dá)式的關(guān)系,但是由于運(yùn)算符存在著優(yōu)先級的問題,因此如果不小心處理則會(huì)出現(xiàn)錯(cuò)誤。例如要進(jìn)行這樣的判斷操作:先對一個(gè)變量進(jìn)行賦值,然后判斷這個(gè)賦值的變量是否不等于一個(gè)常數(shù),代碼如下。if(Number=NewNum!=10){ …}因?yàn)椤?=”運(yùn)算符比“=”的優(yōu)先級要高,所以NewNum!=0的判斷操作會(huì)在賦值之前實(shí)現(xiàn),變量Number得到的就是關(guān)系表達(dá)式的真值或者假值,這樣并不會(huì)按照之前的意愿執(zhí)行。前文曾經(jīng)介紹過括號運(yùn)算符,括號運(yùn)算符的優(yōu)先級具有最高性,因此使用括號來表示要優(yōu)先計(jì)算的表達(dá)式,例如:if((Number=NewNum)!=10){ …}這種寫法比較清楚,不會(huì)產(chǎn)生混淆,沒有人會(huì)對代碼的含義產(chǎn)生誤解。由于這種寫法格式比較精確簡潔,因此被多數(shù)的程序員所接受。四、C語言的運(yùn)算符與表達(dá)式(六)邏輯運(yùn)算符及其表達(dá)式1、邏輯運(yùn)算符及其優(yōu)先級次序幾種運(yùn)算符的優(yōu)先級次序如右圖所示:a>b&&c>d等價(jià)于(a>b)&&(c>d)!a==b||c<d等價(jià)于

(!a==b)||(c<d)a+b>c&&x+y<d等價(jià)于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論