c-2數據類型、運算符和表達式_第1頁
c-2數據類型、運算符和表達式_第2頁
c-2數據類型、運算符和表達式_第3頁
c-2數據類型、運算符和表達式_第4頁
c-2數據類型、運算符和表達式_第5頁
已閱讀5頁,還剩40頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章數據類型、運算符、表達式對數據的操作——運算運算符和表達式整型字符型實型(浮點型)單精度型雙精度型數組類型結構體類型共用體類型構造類型基本類型指針類型空類型數據類型§3C語言程序的基本元素有七種:①標識符②關鍵字③空白字符④注釋⑤分隔符⑥常量⑦運算符一.標識符標識符的概念用來標記文件名、常量、變量、函數名等有效字符序列標識符的使用規則由英文字母、數字(0~9)或下劃線'_'組成的字符序列,

且必須由英文字母或'_'開頭,大小寫敏感。不與關鍵字標識符相同,故又稱合法標識符標識符的長度無統一規定1標識符的習慣用法常量用大寫變量用小寫常用取簡專用取繁顧名思義例:判斷下列標識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1232023/2/6三.空白字符即程序中標識符與標識符之間,行與行之間的空白間隔的字符作用:程序文本格式的編輯,提高可讀性空白字符在編譯時不產生代碼四.注釋(/*...*/或者//……)輔助程序編輯過程中的記憶、閱讀和理解使用的位置:與“空白字符”相同,可多行注釋不產生編譯代碼不允許嵌套所謂關鍵字:即已由系統內部使用,不能重作其它定義C關鍵字共有32個2二.關鍵字例如:

/*Thisisaexample/*fortest*/*/非法五.分隔符有八種,在C編譯程序中有其固定含義3C語言的基本元素(①標識符②關鍵字③空白字符④注釋⑤分隔符⑥常量⑦運算符)常量和變量基本數據類型及其定義不同類型數據間的轉換運算符和表達式§3.1常量和變量一、常量定義:常量是在程序運行過程中,其值不能被改變的量。分類:直接常量:從其字面形式即可判斷的常量。

12(整型)、3.5(實型)、‘a’(字符型)符號常量:利用一個有效標識符來代表一個常量(基本上用大寫)。:PI#definePI3.14例1:(直接常量)#include<stdio.h>voidmain(){intr;floatl,s;r=10;l=2*3.14*r;s=3.14*r*r;printf(“l=%f\n”,l);printf(“s=%f\n”,s);}求圓的周長和面積。l=2*3.14159*r;s=3.14159*r*r;例2:(符號常量)#include<stdio.h>#definePI3.14voidmain(){intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;printf(“l=%f\n”,l);printf(“s=%f\n”,s);}#definePI3.14159

符號常量的優點:①符號常量的實際值易于修改。②符號常量的意義比較明確。例intx=3;chara,b,c;floatpi=3.1415;/*定義pi并初始化*/

floatscore;變量的定義類型變量名表;二、變量(存儲常量的容器)變量的概念變量:在程序執行過程中,其值可以改變的量變量名:在內存中占有一個存儲單元,并對應一個地址3變量名x(地址)變量(值)變量的取值范圍存儲空間大小(字節數)合法標識符定義的同時可以賦初值52.變量的定義和使用C使用變量的原則:“先定義,再使用”#include<stdio.h>voidmain(){intx,y;x=3;y=x*x;printf(“%d”,y);}一個變量只定義一次,定義變量一般在程序的開頭,不能定義在程序的中間或后面。§3.2基本數據類型及其定義基本數據類型(整型實型字符型)八進制整數:無符號,0~7組成,最高位用0引導,如010,0123

十六進制整數:無符號,0~9及a~f或A~F組成,最高位用0x或0X

引導,如0x1a,0X1A

一.整型類型——整型常量十進制整數:帶符號,0~9組成,第一位數字為非零(除零外),如10,1232.整型類型——整型變量P45類型符號關

字(小寫)取

圍字節數整

型帶[signed]int-231~231-14B*[signed]short[int]-32768~327672B[signed]long[int]-231~231-14B不帶unsigned[int]0~232-14B*unsignedshort[int]0~655352Bunsignedlong[int]0~232-14B注意點:1.整型變量的分類2.整型變量在內存中所占的字節數及其取值范圍3.整型變量的溢出問題4.整型變量輸入輸出的格式控制字符用%d和%u3.

整型數據的輸入輸出printf

(格式控制字符串,輸出參數1,...,輸出參數n);scanf(格式控制字符串,輸入參數1,...,輸入參數n);格式控制說明

%…

十進制八進制十六進制int%d%o%xlong%ld%lo%lxunsigned%u%o%xunsignedlong%lu%lo%lx例3(1)輸出整型數據#include<stdio.h>voidmain(){inta=10;unsignedb=8;longc=100;printf("%d,%o,%x\n",a,10,10);printf("%d,%u,%ld\n",a,b,c);printf("%d,%x\n",012,012);}10,12,a10,8,10010,aprintf("%d,%#o,%#x\n",10,10,10);10,012,0xa格式控制字符普通字符注意事項:輸入時,格式控制字符個數與輸出參數應遵循個數一致、順序一致和類型一致。inta;unsignedb;longc;scanf(“__________________”,&a,&b,&c);printf(“__________________”,a,b,c);%d%u%ld%d%u%lda=%d,b=%u,c=%ld例3(2)輸入整型數據兩部分不能同時缺省b.指數形式(指數)[整數部分][.尾數部分][E|e[+|-]

指數部分]二.實型數據——實型常量a.十進制形式:由0~9數字及小數點組成(小數)9如:

e3

2.1e3.5

.e3

e指數部分為整數錯誤!!2.實型數據——實型變量float型:字長32位(4個字節)

double型:字長64位(8個字節)

longdouble型:字長128位(16個字節)存放包含小數位的值分單精度(float)和雙精度(double)兩種float型的有效位數達到7位double型的有效位數達到16位3.實型數據的輸入和輸出輸入scanf()float:%f或%e以小數或指數形式輸入一個單精度浮點數double:%lf或%le以小數或指數形式輸入一個雙精度浮點數輸出printf()float和double使用相同的格式控制說明%f以小數形式輸出浮點數,保留6位小數(float有效數字7位,double有效數字16位)%e以指數形式輸出例1:#include<stdio.h>voidmain(){floata;

doubleb;

a=1234.111111;

b=1234.111111;

printf(“a=%f,b=%f”,a,b);}輸出結果:a=1234.111***,b=1234.111111例2.實型數據輸出示例#include<stdio.h>voidmain() {doubled=3.1415926;printf("%f,%e\n",d,d);printf("%5.3f,%5.2f,%.2f\n",d,d,d);

}

3.141593,3.141593e+000一共5位,小數3位,小數點占一位3.142,3.14,3.14復習1、請選出可用作C語言用戶標識符的一組標識符____________。A).void

define

WORD

B).a3_b3_789IFC).For-gifCASED).3dUNDOsizeof2、voidmain(){inti=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);}輸出結果是

。A).8,10,16B).8,10,10C).10,10,10D).10,10,163、指出下面正確的輸入語句是__________。A).scanf("a=b=%d",&a,&b)B).scanf("a=%d,b=%f",&m,&f)C).scanf("%3d",c)D).scanf("%5.2f”,&f)

轉義字符:在單引號中,用反斜線引導的字符或數字來表示其他含義的字符常量三.字符型數據——字符常量普通字符:用單引號括起來的可表示的單個字符如:‘T’,‘7’,‘!’,

’(空格也是一個字符)9<轉義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數代表的字符水平制表退格換頁反斜線雙引號2位16進制數代表的字符inta=3;printf(“\“%dd\”\n”,a);三.字符型數據——字符變量(一)字符型變量用來存放一個字符常量。實際在內存中存放的是該字符的ASCII碼值。

(二)字符變量的定義形式

charc1,c2;(三)字符的長度:1個字節,取值范圍在0—255,輸入輸出用%c

(四)在一定范圍內可直接參與整數變量的運算voidmain(){inti;charc;i=97;c=‘a’;printf(“i=%c,c=%c\n”,i,c);printf(“i=%d,c=%d”,i,c);}例1:輸出結果:i=a,c=ai=97,c=97

字符型數據和整型數據(0~255)之間可以通用。例2:字符數據的算術運算。

void

main()

{charch1=‘a’,ch2=‘B’;

ch1=ch1-32;ch2=ch2+32;

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ch1=A,ch2=b

/*實現字母大小寫的轉換*/例3:字符數據輸入。

void

main()

{charch1,ch2;

scanf(“%c%c”,&ch1,&ch2);

printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

}Ab↙Ch1=A,ch2=b

調用getchar和putchar輸入輸出一個字符字符輸出函數putchar輸出一個字符putchar(輸出參數);字符常量或字符變量charch=‘a’;putchar(ch);putchar(‘?’);a?putchar(‘\n’);字符輸入函數getchar輸入一個字符charch1,ch2;ch1=getchar();ch2=getchar();功能:從鍵盤輸入一個字符,空格,回車鍵等都將作為字符讀入,且只有按enter鍵(回車鍵)時輸入結束四.字符串常量用“”括起來的零個或多個字符(含轉義字符)組成的字符序列

如:

"ascii","7y677","8757gj\n"

b.字符串的長度:指字符串中字符的個數。長度為0的字符串(即一個字符都沒有的字符串)稱為空串,表示為“

”(一對緊連的雙引號)。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長度分別為14和13(空格也是一個字符)。c.字符串的存儲C語言規定:在存儲字符串常量時,由系統在字符串的末尾自動加一個‘\0’作為字符串的結束標志。注意:在源程序中書寫字符串常量時,不必加結束字符‘\0’,否則畫蛇添足。如果有一個字符串為“china”,則它在內存中的實際存儲如下所示:

china\0思考:‘a’和“a”相同嗎?

‘7’和7相同嗎?charc1=‘a’;charc2=“a”;(錯誤)變量賦值的方法方法一:定義變量的同時賦值方法二:先定義變量,再用scanf賦值inta=4,b;scanf(“%d”,&b);3.3不同類型數據間的轉換類型轉換的概念在程序運行中,一種數據的類型改變成另一種數據類型類型轉換兩種方式隱式轉換——自動類型轉換顯式轉換——強制類型轉換隱式轉換發生在下列三種情況混合運算(算術轉換)賦值運算數據輸入輸出10

精度損失問題:無精度損失問題,但賦值運算中視情況而定一.算術轉換(隱式轉換)當不同類型數據混合運算時,自動進行的轉換轉換原則

精度損失問題:較高類型向較低類型轉換時可能發生二.強制類型轉換(顯式轉換)人為進行的類型轉換使用格式

(類型名)表達式基本類型或指針類型常量、變量及其表達式11無條件的轉換(垂直)按類型的高低“向高看齊”顯式轉換(強制轉換)一般形式:(類型名)(表達式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變低高intunsignedunsignedlongdouble

char(short)unsignedshortlong

float3)結合性:即指運算符與運算元的結合方向用于指導同級的運算左結合性——op自左向右右結合性——op自右向左表達式:運算元E與運算符的組合式§3.4運算符與表達式12一.運算符簡介運算符(op)

:用于對運算元E

進行規定的操作。共有34種運算符,可分十大類(參見本課件第一章)運算符的三個屬性1)運算元數E:C最少1個,最多3個2)優先級:共十五個(可簡化為八或十個)簡化后的優先級:1一級運算符2單變量運算符3算術運算符4移位運算符5關系運算符6位邏輯運算符7邏輯運算符8條件運算符9賦值運算符10逗號運算符高低均為雙元運算,左結合五種運算*乘法

/除法%求模+加法-減法優先級(4)二.算術運算優先級(3)

說明a/b式中,a、b均為整數時,若不能整除,其商向零取整a%b式中,a、b均為整數+、-用于符號運算時,為單元運算、優先級(2)、右結合性13括號“()”之內表達式優先級最高例:

-a-b+c

運算元(操作數E)必須是變量,不能用于常量和表達式。

例如,5++、--(a+b)等都是非法的。

三.自加自減運算用于對變量(假設為i)的自身加1減1運算——自反運算運算符、表達式及其屬性后置式:在多個運算符表達式中,總是:先使用(i)一次,再做自加(減)運算14自加自減運算應用示例voidmain(){intx=6,y;printf("x=%d\n",x);/*輸出x的初值*/y=++x; /*前置運算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置運算*/printf("y=x--:x=%d,y=%d\n",x,y);}y=x++;y=--x;X=6y=++x:x=7,y=7y=x--:x=6,y=7四.賦值運算分為簡單賦值和復合賦值兩種雙元運算、優先級(14)、右結合賦值運算的一般形式

簡單賦值

E1=E2

復合賦值

E1op=E2

E1=(E1opE2)E1

E2的值

E1為變量,E2為常量、變量或表達式

E1、E2類型不同時,將發生類型轉換,結果為E1類型運行時,可以連續賦值給多個變量,但不能用于初始化例:inta=b=c=2;×

具有表達式使用功能

op運算符共有十種(算術和位運算),要求掌握下列五種:①*=

②/=③%=

④+=⑤-=15例2.1賦值運算舉例voidmain(){inta=3,b=2,c;b*=a+4*3%5;

printf("b=%d\n",b);a=8;a*=b=c=3;

printf("\na=%db=%d\n",a,b);a=5+(c+=3);

printf("a=%dc=%d\n",a,c);}/*b=b*(a+4*3%5)*//*b=10*//*c3,bc,ab*a*//*a=24b=3*//*賦值運算的表達式

溫馨提示

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

評論

0/150

提交評論