數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第1頁
數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第2頁
數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第3頁
數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第4頁
數(shù)據(jù)類型運(yùn)算符與表達(dá)式_第5頁
已閱讀5頁,還剩151頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1第三章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式

3.1C語言的數(shù)據(jù)類型3.2常量3.3簡單變量3.4庫函數(shù)3.5運(yùn)算符和表達(dá)式2其值不可以再分解為其它類型。值用來表示某個(gè)變量在內(nèi)存儲(chǔ)器中的地址根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的。構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。3.1C語言的數(shù)據(jù)類型

P2133.2

常量

基本數(shù)據(jù)類型分為:

1、常量:在程序執(zhí)行過程中,其值不發(fā)生改變的量

2、變量:其值可變的量稱為變量。

在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。4常量類型直接常量(字面常量):n

整型常量:12、0、-3;n

浮點(diǎn)型常量:4.6、-1.23;n

字符常量:‘a(chǎn)’、‘b’。n

字符串常量:“ABC”、“123”。符號(hào)常量:用標(biāo)示符代表一個(gè)常量。在C語言中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,稱之為符號(hào)常量。在使用之前必須先定義,#define

5標(biāo)識(shí)符號(hào)一、整型常量類型:

1.十進(jìn)制整數(shù):123、-76、02.八進(jìn)制整數(shù):076、-0253076轉(zhuǎn)換成十進(jìn)制:7*8+63.十六制整數(shù):0xa、0x20、0xf40xf4轉(zhuǎn)換成十進(jìn)制:15*16+4只有整數(shù)

3.2.1整型常量6二、整數(shù)的后綴1、一個(gè)整型常量的尾部加上字母L或l,則表示該整數(shù)為長整型常量。例如,23L是十進(jìn)制的長整型常量,0x23L是十六進(jìn)制的長整型常量。2、也可以用后綴U或u表示無符號(hào)整型常量。例如,234U是十進(jìn)制無符號(hào)整型常量,023U是八進(jìn)制無符號(hào)整型常量。3、后綴L和U可以同時(shí)使用,例如78LU,表示無符號(hào)長整型,并且L和U兩種后綴的順序任意。

7三、整型數(shù)據(jù)在內(nèi)存中的存放形式:一個(gè)十進(jìn)制整型數(shù)10,在內(nèi)存中是以二進(jìn)制形式存放的,是的二進(jìn)制數(shù)為1010每一個(gè)整型量在TurboC中用2個(gè)字節(jié),在VC中用4個(gè)字節(jié)存放,本例2個(gè)字節(jié)來說明,存放示意圖為:

事實(shí)上,數(shù)值是以補(bǔ)碼表示的:n

正數(shù)的補(bǔ)碼和原碼相同;n

負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式按位取反再加1。00000000000010108例如:求-10的補(bǔ)碼:10的原碼:取反:再加1,得-10的補(bǔ)碼:由此可知,左面的第一位是表示符號(hào)的。0000000000001010111111111111010111111111111101109

3.2.2

浮點(diǎn)型常量

浮點(diǎn)型常量也稱為實(shí)數(shù),只采用十進(jìn)制,有二種形式:小數(shù)形式指數(shù)形式由數(shù)碼0~9和小數(shù)點(diǎn)組成。小數(shù)形式必須有小數(shù)點(diǎn)。

由十進(jìn)制數(shù)、加階碼標(biāo)志“e”或“E”、階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為:aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為:

a*10n。

10實(shí)型常量實(shí)例:

小數(shù)形式:12.0、–0.71、–0.71、3.14

指數(shù)形式:6.945e-8

注意:指數(shù)形式(科學(xué)表示法)中,尾數(shù)和階碼都不能省略、階碼只能為整型常量、只有十進(jìn)制形式

6.945e–8尾數(shù)階碼6.945*10-811實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:

+.314159+1數(shù)符指數(shù)小數(shù)部分占的位數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。占的位數(shù)愈多,能表示的數(shù)值范圍愈大。指數(shù)符號(hào)12

注:任一字符都可用’\ddd’或’\xhh’表示,其中ddd為該字符的ASCII碼八進(jìn)制形式、hh為該字符的ASCII碼十六進(jìn)制形式

例:’A’、’\101’、’\x41’均表示A

3.2.3字符常量(一個(gè)字符)

兩種表示方式:

1.在字符前后加單撇號(hào):’y’、’3’、‘$’

2.用轉(zhuǎn)義字符表示(P25表3-1):’\n’→換行’\r’→回車’\\’→\’\’’→’’\”’

表示”’\12’→換行’\15’→回車’\xa’→換行’\134’→\’\xd’→回車’\x5c’→\0-70-9a-f整型常量與轉(zhuǎn)義字符不能混淆13表3-1常用轉(zhuǎn)義字符及含義轉(zhuǎn)義字符含義ASCII值\a鳴鈴(Alert,是ANSIC89添加的)7\b退格8\f走紙換頁12\n回車換行10\r回車(不換行)13\t橫向跳到下一制表位置9\\反斜線符“\”92\'單引號(hào)符39\"雙引號(hào)符34\ddd1~3位八進(jìn)制數(shù)所代表的字符\xhh1~2位十六進(jìn)制數(shù)所代表的字符14字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法

每個(gè)字符變量分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值以ASCII碼的形式存放。如:x的十進(jìn)制ASCII碼是120y的十進(jìn)制ASCII碼是121x:y:

允許對(duì)整型變量賦以字符值,或?qū)ψ址兞抠x以整型值。允許把字符變量按整型量輸出,或把整型量按字符量輸出。

整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時(shí),只有低八位字節(jié)參與處理。

0111100001111001120的二進(jìn)制代碼15

3.2.4字符串常量

由兩個(gè)雙撇號(hào)括起來一串字符,其中字符個(gè)數(shù)>=0個(gè)1)字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。2)可以把一個(gè)字符常量賦予一個(gè)字符變量,不能把一個(gè)字符串常量賦予一個(gè)字符變量。3)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個(gè)字節(jié)中存放字符’\0’(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。16常量總結(jié)一、整型常量:二、實(shí)型常量:三、字符常量:四、字符串常量:十進(jìn)制整數(shù):10八進(jìn)制整數(shù):012十六制整數(shù):0xa小數(shù)形式:0.123456指數(shù)形式:1.23456e-1ASCII碼十進(jìn)制:’\n’

’A’ASCII碼八進(jìn)制:’\12’

’\101’ASCII碼十六制:’\xa’

’\x41’

以‘\0’結(jié)束。17例如:字符串“Cprogram”在內(nèi)存中所占的字節(jié)為:字符常量‘a(chǎn)’和字符串常量“a”在內(nèi)存中的區(qū)別:‘a(chǎn)’在內(nèi)存中占一個(gè)字節(jié),可表示為:"a"在內(nèi)存中占二個(gè)字節(jié),可表示為:

Cprogram\0aa\00110000118在TC中,-3、3、‘3’、“3”在內(nèi)存中的存放形式:3:‘3’:

“3”:-3:0000000000000011001100110000000000000011001100111111111111111101?\01111111111111100ASCII碼值為(51)10→(110011)219

計(jì)算字符串長度(其中字符個(gè)數(shù))時(shí)要認(rèn)真區(qū)分轉(zhuǎn)義字符與一般字符如:1、”\x18\18qw+\168\1676”中字符個(gè)數(shù)為?2、”\x18\0123\01\0”中字符個(gè)數(shù)為?3、”\x18\08qw\0168\0”中字符個(gè)數(shù)為?

字符串常量也可用轉(zhuǎn)義字符表示

例:”ThisisaCprogram\n”也可表示為:

”Thisisa\103\x20program\n”*若把字符串存儲(chǔ)到內(nèi)存中,系統(tǒng)會(huì)自動(dòng)在其末尾加一個(gè)’\0’8*8+3=672*16=32104120例.#include”stdio.h”voidmain(){printf(”ab\tt\tpractice\tbook\n”);}結(jié)果:ab

t

practice

book*轉(zhuǎn)義字符的使用例子

’\n’——換行、’\r’——回車、

’\t’——水平跳到下一個(gè)tab位置

’\b’——退格、’\f’——換頁8個(gè)字符9173321

先顯示ab,再跳到下一tab位,即第九位輸出cd先輸出12345678,再換行輸出studentB顯示結(jié)果:

abcd

12345678

studentB例.#include<stdio.h>

intmain()

{printf(“ab\tcd\n”);

printf(“12345678\012student\x42\n");

return0;}

‘\012’=8+2,即換行‘\x42’=16*4+2,即’B’22例.

#include<stdio.h>

intmain()

{printf(”pencil\b\b\bxxx\n”);

return0;}

先顯示pencil再退三格用xxx覆蓋cil退格顯示結(jié)果:penxxx23例.#include<stdio.h>intmain(){printf(”room”);printf(”pencil\n1234567890\r0\t1”);return0;}顯示結(jié)果:roompencil0

10換行回車水平跳到下一個(gè)Tab位先顯示1234567890243.2.5符號(hào)常量及其定義

用#define命令宏定義一個(gè)符號(hào)常量(用標(biāo)識(shí)符命名)代表某一常量,以減少程序中重復(fù)書寫某些常量的工作量例#definePI3.141592#include<math.h>intmain()

{printf(”%f,%f\n”,sin(35*PI/180));return0;}

1.符號(hào)常量名中的英文字母習(xí)慣用大寫

2.不能象給變量賦值那樣給符號(hào)常量賦值

3.符號(hào)常量即以后要講的宏名的用途。調(diào)用函數(shù)庫中的函數(shù)a=3.14159合法3.14159=a非法25雙引號(hào)例:#include<stdio.h>

#defineS“ThisisaCProgram.”intmain(){printf(S);return0;}使用符號(hào)常量S編譯預(yù)處理后產(chǎn)生語句:

printf(“ThisisaCProgram.”);26例:#include<stdio.h>#definePI3.14

intmain(){doubler,s;r=20.0;s=PI*r*r; printf("s=%f\n",s);return0;}程序運(yùn)行結(jié)果為:

S=1256.000000定義符號(hào)常量PI使用符號(hào)常量PI編譯預(yù)處理后產(chǎn)生如下的語句

s=3.14*r*r;273.3.1變量的命名變量代表計(jì)算機(jī)內(nèi)存中的一個(gè)存儲(chǔ)單元,其值在程序運(yùn)行過程中是可以改變的。變量有以下特性:變量名、變量值、變量類型、變量的存儲(chǔ)地址、變量的存儲(chǔ)屬性。變量需要一個(gè)名字,以通過變量名得到數(shù)據(jù)存儲(chǔ)在內(nèi)存中的地址,變量名為合法的標(biāo)識(shí)符。高級(jí)語言的編譯器在編譯連接時(shí)會(huì)給每一個(gè)變量分配一個(gè)內(nèi)存單元,變量的值就存儲(chǔ)在該內(nèi)存單元中。訪問變量的值,實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,然后對(duì)其中存儲(chǔ)的數(shù)據(jù)進(jìn)行訪問。3.3簡單變量28

標(biāo)識(shí)符:由英文字母、數(shù)字和下劃線這三種字符組成且第一個(gè)字符必須為字母或下劃線。

作用:用來給變量、函數(shù)等命名

注意:

1.區(qū)分大小寫英文字母

2.關(guān)鍵字(保留字)不能作標(biāo)識(shí)符

例:book、Book、int1、Int、printf、_a12都可作標(biāo)識(shí)符

5a、$、p#、int、x+y都不可作標(biāo)識(shí)符函數(shù)名不是保留字保留字I大寫C語言標(biāo)識(shí)符293、變量、變量名、變量類型、變量值、給變量賦值之間的關(guān)系變量——杯變量名——杯子的號(hào)碼變量類型——所裝的材料名稱變量值——所裝的東西多少給變量賦值——把某材料倒進(jìn)杯子水1號(hào)杯水2號(hào)杯油3號(hào)杯若類型不一致、以變量為準(zhǔn)inta;a=123.5;則a為12330*變量的特性:①一個(gè)變量只有一個(gè)值②新的不來、舊的不去,新的一來、舊的立即丟失③取之不盡例:inta;……a=3;……a=7.8;……這段時(shí)間a值為3這段時(shí)間a值為731例:inti;i=12;

定義一個(gè)整型變量i,給其賦值12,則在內(nèi)存中開辟了一個(gè)存儲(chǔ)空間來存放i的值12,并通過變量名i來引用它。i12變量值變量名內(nèi)存單元變量用標(biāo)識(shí)符命名,習(xí)慣用小寫

1、整型變量類型:

(1)[signed]shortint

(2)[signed]int(3)[signed]longint(4)unsignedshort[int](5)unsigned[int](6)unsignedlong[int]區(qū)別:①每個(gè)變量在內(nèi)存中所占字節(jié)數(shù)②所能存放的數(shù)值范圍324字節(jié)32位2字節(jié)16位3.3.2變量的基本數(shù)據(jù)類型P22表3.1-32768~327670~6553533各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍

以13為例:shortint型:int型、longint型:unsignedshortint型:unsignedint型、unsignedlongint型:00000000000011010000000000001101000000000000000000000000000011010000000000000000000000000000110134整型數(shù)據(jù)的溢出#include<stdio.h>intmain(){shortinta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);return0;}32767:

01111111111111111000000000000000運(yùn)行結(jié)果:32767,-32768-32768:

352、字符型變量類型:

*字符型變量是用來存放單個(gè)字符常量的ASCII碼,不是字符本身。整型變量與字符型變量可混淆使用。例如:

chara,b;

(1)char

(2)unsignedchar區(qū)別:對(duì)變量值A(chǔ)SCII碼的理解

char——一個(gè)數(shù)的補(bǔ)碼

unsignedchar——一個(gè)不帶正負(fù)號(hào)的整數(shù)-128~1270~255363、實(shí)型變量類型(1)float

(2)double*(3)longdouble

區(qū)別:①每個(gè)變量在內(nèi)存中所占字節(jié)數(shù)

float—4、double—8②所能存放的數(shù)值范圍

float10-38——1038double10-308——10308③有效數(shù)字位數(shù)float—7、double—1637實(shí)型數(shù)據(jù)的舍入誤差。#include<stdio.h>intmain(){floata,b;a=123456.789e5;b=a+20;

printf("%f\n",a);printf("%f\n",b);return0;}運(yùn)行結(jié)果:12345678848.00000012345678848.000000注意:1.0/3*3的結(jié)果并不等于1。大數(shù)加小數(shù)有效數(shù)字7位,前7位有效1234567890038定義變量類型:

<類型名><變量表>;若變量表中含有多個(gè)變量,它們之間用逗號(hào)隔開。最后一個(gè)變量名之后必須以“;”號(hào)結(jié)尾

例:unsignedinti,j;或unsignedi,j;

3.3.3

變量的類型定義一般所有變量都在聲明部分定義類型393.3.4變量的初始化

——把“=”右側(cè)的值賦給“=”左側(cè)的變量1、賦初值(初始化):一個(gè)變量被定義后,它的值未被確定。使用變量時(shí),要確保其有確定的初值,才能保證計(jì)算結(jié)果正確。如果在變量定義的時(shí)候?qū)υ撟兞恐付ㄖ?,即?duì)變量進(jìn)行初始化。格式為在相應(yīng)變量后寫=<常量>例:inta=123,b=456,sum;a123b456sum不確定40也可用賦值語句變量確定值:

<變量>=<表達(dá)式>;例:inta=123,b=456,sum;

等價(jià)于inta,b,sum;a=123;b=456;41#include<stdio.h>intmain(){ inti; printf("%d\n",i);return0;}i未給出明確的值,將輸出一個(gè)不確定的值42

#include<stdio.h>intmain(){chara,b;a=120;b=121;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);return0;}運(yùn)行結(jié)果:x,y120,121向字符變量賦以整數(shù)定義a,b為字符型賦值語句中賦以整型值格式符"c“,輸出字符格式符為d",輸出整數(shù)43#include<stdio.h>intmain(){chara,b;a='a';b='b';a=a-32;b=b-32;printf("%c,%c\n%d,%d\n",a,b,a,b);return0;}運(yùn)行結(jié)果:A,B65,66

a,b被定義為字符變量并賦予字符值用字符的ASCII碼參與運(yùn)算大小寫字母的ASCII碼相差32,因此運(yùn)算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出44C語言用函數(shù)的形式將實(shí)現(xiàn)某一特定功能的多條語句組成一個(gè)模塊,一個(gè)程序可以由多個(gè)函數(shù)構(gòu)成,通過函數(shù)的調(diào)用來組織整個(gè)程序。C語言規(guī)定程序的入口點(diǎn)必須是main函數(shù)(主函數(shù)),通過main函數(shù)再調(diào)用其他的函數(shù)。函數(shù)是構(gòu)成C語言程序的基本組成單位,C語言稱為函數(shù)式程序設(shè)計(jì)語言。函數(shù)可以分為兩種:(1)編譯系統(tǒng)提供的庫函數(shù)(libraryfunction);常用的有以下幾種:數(shù)學(xué)函數(shù)、字符和字符串函數(shù)、輸入和輸出函數(shù)、動(dòng)態(tài)內(nèi)存分配函數(shù)。(2)程序員自已編制的自定義函數(shù)。3.4庫函數(shù)45

庫函數(shù)在對(duì)應(yīng)的某個(gè)頭文件中聲明其函數(shù)原型,使用某個(gè)庫函數(shù)前都應(yīng)在程序開始處包含相應(yīng)的頭文件。文件包含可以用預(yù)處理命令#include來實(shí)現(xiàn),例如:

#include<math.h>或#include"math.h"C語言函數(shù)調(diào)用的語法格式為:

函數(shù)名(實(shí)參列表);#include<math.h>intmain(){ doublea=3.5,b=4.5,c=5.5; doublep,s; p=0.5*(a+b+c); s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("area=%f",s);return0;}3.4.1庫函數(shù)使用方式數(shù)學(xué)函數(shù)頭文件調(diào)用無參函數(shù),則“實(shí)參列表”可以沒有,但括號(hào)不能省略用海倫公式計(jì)算三角形面積求開方的數(shù)學(xué)庫函數(shù)46數(shù)學(xué)函數(shù)的原型在頭文件math.h中聲明,在使用時(shí)應(yīng)在程序頭部包含math.h文件:

#include<math.h>或#include"math.h"1.三角函數(shù)sin、cos、tan的函數(shù)原型:doublesin(doublex);doublecos(doublex);doubletan(doublex);3.4.2常用數(shù)學(xué)函數(shù)計(jì)算正弦計(jì)算余弦計(jì)算正切47例:計(jì)算正弦、余弦和正切值#include<stdio.h>#include<math.h>#definePI3.14159265intmain(){ doublex,y; x=0.5*PI; y=sin(x); printf("sin(%f)=%f\n",x,y); y=cos(x); printf("cos(%f)=%f\n",x,y); x=0.25*PI; y=tan(x); printf("tan(%f)=%f\n",x,y);return0;}函數(shù)調(diào)用,計(jì)算正弦函數(shù)調(diào)用,計(jì)算余弦函數(shù)調(diào)用,計(jì)算正切482.絕對(duì)值函數(shù)abs、fabs、labs的函數(shù)原型:intabs(intx);doublefabs(doublex);longlabs(longx);求整數(shù)的絕對(duì)值求浮點(diǎn)數(shù)的絕對(duì)值求長整型數(shù)的絕對(duì)值abs(-10)等于10fabs(-5.6)等于5.6labs(-9999)等于9999493.exp和pow函數(shù)的函數(shù)原型:doubleexp(doublex);doublepow(doublex,doubley);求ex求xyexp(2.0)等于7.389056pow(2.0,3.0)等于8.0504.log和log10函數(shù)的函數(shù)原型:doublelog(doublex);doublelog10(doublex);5.sqrt函數(shù)的函數(shù)原型:doublesqrt(doublex);求e為底0的自然對(duì)數(shù)值lnxlog(7.389056)等于2.0log10(100.0)等于2.0求以10為底的對(duì)數(shù)值log10x求x的平方根sqrt(4.0)等于2.0516.隨機(jī)函數(shù)rand、srand:rand和srand函數(shù)的原型在頭文件stdlib.h中定義,使用時(shí)應(yīng)在程序開頭包含stdlib.h文件。函數(shù)原型:intrand(void);voidsrand(unsignedintseed);返回一個(gè)值在0~RAND_MAX之間的偽隨機(jī)整數(shù),RAND_MAX至少為32767用參數(shù)seed來設(shè)置一個(gè)偽隨機(jī)數(shù)序列的開始點(diǎn),以便調(diào)用rand函數(shù)時(shí)產(chǎn)生一個(gè)新的偽隨機(jī)數(shù)序列。參數(shù)seed稱為隨機(jī)數(shù)種子。52例:用當(dāng)前機(jī)器時(shí)間作隨機(jī)數(shù)發(fā)生器,產(chǎn)生3個(gè)隨機(jī)整數(shù)。#include<stdlib.h>#include<stdio.h>#include<time.h>intmain(){inti;srand((unsigned)time(NULL));printf("%6d\n",rand());printf("%6d\n",rand());printf("%6d\n",rand());return0;}用當(dāng)前機(jī)器時(shí)間作隨機(jī)數(shù)種子使用當(dāng)前時(shí)間作為隨機(jī)數(shù)種子,使得每運(yùn)行程序時(shí)產(chǎn)生的3個(gè)隨機(jī)數(shù)都不相同。程序運(yùn)行結(jié)果為:

202732852228006533.4.3

字符輸入輸出函數(shù)

1.字符輸出函數(shù)putchar:格式:putchar(一個(gè)整形或字符型輸出項(xiàng))

功能:

同printf(”%c”,輸出項(xiàng)),在顯示器上

輸出單個(gè)字符。例如:putchar('A');(輸出大寫字母A)

putchar(x);(輸出字符變量x的值)

putchar(‘\101’);(也是輸出字符A)

putchar('\n');(換行)對(duì)控制字符則執(zhí)行控制功能,不在屏幕上顯示。使用本函數(shù)前必須要用文件包含命令:#include<stdio.h>或#include“stdio.h”54例:#include<stdio.h>intmain(){charc=’A’;putchar(66);putchar(’\53’);putchar(c+2);putchar(’\n’);putchar(’7’);putchar(’\n’);return0;}B+C7換行換行putchar函數(shù)不但可以輸出普通字符,還可以輸出控制字符

結(jié)果:B+C755例:#include<stdio.h>#include<stdio.h>intmain(){charc1='A',c2=65,c3='\x41'; putchar(c1); putchar(c2); putchar(c3); putchar('\n'); putchar(21); putchar('3');return0;}AAA§(21是§的ASCII碼值)換行3結(jié)果:AAA §3562.字符輸入函數(shù)getchar:形式:getchar()功能:c=getchar();同scanf(”%c”,&c);注意:需在文件開頭加#include”stdio.h”

輸入一個(gè)字符,賦給變量c57例:#include<stdio.h>

intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();

putchar(a);

putchar(b);

putchar(c);return0;}輸入:$#↙abc結(jié)果:$#輸入:$↙#↙abc結(jié)果:$#換行58使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:1)getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。

2)使用本函數(shù)前必須包含文件“stdio.h”。

3)在TC++屏幕下運(yùn)行含本函數(shù)程序時(shí),將退出TC++屏幕進(jìn)入用戶屏幕等待用戶輸入。輸入完畢再返回TC++屏幕。593.4.4

格式化輸入輸出函數(shù)在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫函數(shù)完成的,都是函數(shù)語句。使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令:#include<stdio.h>

或#include”stdio.h”601.格式輸出函數(shù)printf:printf(······)功能:

按格式控制所指定的形式(向用戶屏)輸出輸出項(xiàng)的值。即將數(shù)據(jù)按指定的格式輸出到標(biāo)準(zhǔn)輸出流中,該函數(shù)可以靈活地輸出多種類型的數(shù)據(jù)。61#include<stdio.h>intmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);return0;}

結(jié)果:a=123,b=456,c=579

原樣輸出格式控制符與輸出項(xiàng)表列一一對(duì)應(yīng)62格式:

printf(格式控制,輸出項(xiàng)表列)

一、輸出項(xiàng)表列:由一個(gè)或多個(gè)輸出項(xiàng)組成(若多個(gè)、它們之間用逗號(hào)隔開),常量、變量、函數(shù)、表達(dá)式、字符數(shù)組名等均可做輸出項(xiàng)。二、格式控制:字符串常量或字符數(shù)組名。其中字符可由下面3類組成:普通字符(原樣輸出)轉(zhuǎn)義字符(輸出所表示的字符或?qū)崿F(xiàn)其功能)格式說明:控制對(duì)應(yīng)輸出項(xiàng)的輸出形式"a=""%d""\n"轉(zhuǎn)義字符,換行a是單精度浮點(diǎn)型,有效位數(shù)七位。整數(shù)已占五位,故小數(shù)二位之后均為無效數(shù)字63#include<stdio.h>intmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf("%f\n%lf\n",a,b);return0;}結(jié)果:33333.33203133333.333333

b是雙精度型,有效位為十六位。但VC小數(shù)后最多保留六位,其余部分四舍五入。64格式說明:控制對(duì)應(yīng)輸出項(xiàng)的輸出形式(每個(gè)格式說明按先后順序與輸出項(xiàng)一一對(duì)應(yīng)),輸出結(jié)果中格式說明被對(duì)應(yīng)的輸出項(xiàng)值取代。

(1)

格式說明基本形式:

①%d(或%i)、%o、%x(或%X)、%u、

%c對(duì)應(yīng)的輸出項(xiàng)類型為字符型和整型。帶符號(hào)十進(jìn)制帶符號(hào)八進(jìn)制帶符號(hào)十六進(jìn)制無符號(hào)十進(jìn)制字符65#include<stdio.h>

intmain(){inta=65;charc=’!’;printf(”%d,%c\n”,a,a);printf(”c=%c,ItsASCIIcode=%d\n”,c,c);return0;}結(jié)果:65,Ac=!,ItsASCIIcode=3366#include<stdio.h>intmain(){inta=﹣3,m=﹣0x15a,k=﹣346;printf(”%d,%u,%x,%o”,a,a,a,a);printf(”%d,%x\n”,m,k);return0;}結(jié)果:﹣3,65533,fffd,177775﹣346,fea6

(65536-3)10

十進(jìn)制無符號(hào)(fffd)16

十六進(jìn)制(177775)8

八進(jìn)制

(-15a)16

(-346)10

與a轉(zhuǎn)換相同%o、%x(或%X)、%u按unsigned型輸出,且不帶前導(dǎo)符號(hào)“o”和“x”67

②%s對(duì)應(yīng)的輸出項(xiàng)為字符串或字符數(shù)組

#include<stdio.h>

intmain(){charname[]=”Jone”;

printf(”%s%s%c\n”,”Whois”,name,’?’);return0;}結(jié)果:

WhoisJone?字符串字符68③%f、%e(或%E)、%g(或%G)對(duì)應(yīng)float型輸出項(xiàng)%lf、%le(或%E)、%lg(或%G)對(duì)應(yīng)double型輸出項(xiàng)%f——小數(shù)形式(6位小數(shù))%e(或%E)——標(biāo)準(zhǔn)化指數(shù)形式(尾數(shù)的小數(shù)點(diǎn)前有一位且只有一位非零、5位小數(shù))%g(或%G)——讓系統(tǒng)自動(dòng)選取%f(去掉小數(shù)點(diǎn)后多余的零)或%e中較短者——6位有效例:main(){floatf;f=123.46;

printf(”%f,%e,%g\n”,f,f,f)}結(jié)果:

123.459999,1.23460e+02,123.46數(shù)字69(2)在格式說明基本形式中加附加格式說明符①若輸出項(xiàng)為long型或unsignedlong型,則用下面格式說明控制:

%ld、%lx、%lo、%lu

若輸出項(xiàng)為short型或short型,則用下面格式說明控制:

%hd、%hx、%ho、%hu②在格式說明%后加一個(gè)整數(shù)m——指定寬度為|m|位:

若實(shí)際需要的位數(shù)>|m|位、則此m失效若m為無符號(hào)整數(shù),則左邊填空格若m為負(fù)整數(shù),則右邊填空格若m為帶正號(hào)整數(shù),則左邊填空格且所輸出的數(shù)據(jù)前有正負(fù)號(hào)70#include<stdio.h>

intmain(){inta=12;longb=12345678;printf(”%6d\n”,a);printf(”%-6d\n”,a);printf(”%+6d\n”,a);printf(”%12ld\n”,b);printf(”%+8s\n”,”book”);return0;}

1212+1212345678book字符串負(fù)數(shù)本身肯定帶負(fù)符號(hào),帶正號(hào)必須這樣寫71③在%s中間插入m.n:m含義同②,此m可省略、若省略則m=n。n為無符號(hào)整數(shù)、表示只輸出對(duì)應(yīng)字符串中左邊n個(gè)字符。#include<stdio.h>

intmain()

{printf(”%8.3s\n”,”book”);printf(”%.3s\n”,”book”);

return0;}輸出:booboo寬度就是372④在%f、%e(或%E)、%g(或%G)中間插入m.n:m含義同②,此m可省略、若省略則m=n。

n為無符號(hào)整數(shù)、表示n位小數(shù),其余四舍五例8:printf(”a=%+10.3lf\n”,123.45678);

輸出:注:若②與④中m為正整數(shù)且m前加0,則輸出的左邊空位填0例9:printf(”a=%+010.3lf\n”,123.45678);

輸出:a=+123.457a=+00123.457四舍五入73⑤在%x、%o、%lx、%lo的%后加#輸出帶前導(dǎo)的八進(jìn)制或十六進(jìn)制數(shù)據(jù)

intmain(){intx=7281;printf(”%o,%#o\n”,x,x);printf(”%x,%#x\n”,x,x);return0;}輸出:

16161,016161

1c71,0x1c71注:格式控制中,連續(xù)的兩個(gè)%表示一個(gè)%(不是格式說明符)(16161)8(1c71)16742.格式輸入函數(shù)scanf:格式:

scanf(格式控制,輸入項(xiàng)地址表列)地址:1)變量名前加&——變量在內(nèi)存中的地址;2)數(shù)組名——數(shù)組在內(nèi)存中的首地址。例如:&a,&b分別表示變量a和變量b的地址。這個(gè)地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。一個(gè)或多個(gè)地址組成(若多個(gè)之間用逗號(hào)隔開)75變量的地址和變量值的關(guān)系如下:

1、在賦值表達(dá)式中給變量賦值:如:a=5672、scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址:

如:scanf(”%d”,&a);

3、這兩者在形式上是不同的。&是一個(gè)取地址運(yùn)算符,&a是一個(gè)表達(dá)式,其功能是求變量的地址。變量名,不能寫地址變量的值變量a的地址76

函數(shù)功能:系統(tǒng)切換到用戶屏、要求并等待用戶按格式控制形式和順序輸入要賦給輸入項(xiàng)的常量,按回車鍵結(jié)束,系統(tǒng)立即把所輸入的賦給相應(yīng)輸入項(xiàng)。它是一個(gè)標(biāo)準(zhǔn)庫函數(shù),與printf函數(shù)相同,使用scanf函數(shù)之前不必包含stdio.h文件。注意:格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符“&”后跟變量名組成的。不能是符號(hào)常量,不加單撇號(hào)或雙撇號(hào),直接輸入一定要有77

#include<stdio.h>

intmain(){inta,b,sum;scanf(”%d,%d”,&a,&b);sum=a+b;printf(“sum=%d\n”,sum);return0;}執(zhí)行程序時(shí)應(yīng)輸入123,456↙如果要輸入a=123;b=456;沒有輸入任何數(shù)據(jù)直接回車,結(jié)果出不來,上機(jī)要帶作業(yè)及數(shù)據(jù)來scanf(”a=%d;b=%d”,&a,&b);78

使用scanf函數(shù)還必須注意以下幾點(diǎn):1)scanf函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能用此語句輸入小數(shù)為2位的實(shí)數(shù)。2)scanf中要求給出變量地址,如給出變量名則會(huì)出錯(cuò)。如scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a)。3)在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到這些符號(hào)即認(rèn)為該數(shù)據(jù)結(jié)束。79空格,輸入多少個(gè)無關(guān)4)在輸入字符數(shù)據(jù)時(shí),若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。如:

scanf("%c%c%c",&a,&b,&c);輸入為:則賦值:如果在格式控制中加入空格作為間隔,如:

scanf("%c%c%c",&a,&b,&c);輸入時(shí)數(shù)據(jù)之間可加空格。d

ef↙bcabcad

ef↙bcadef↙805)如果格式控制串中有非格式字符則輸入時(shí)也要輸入該非格式字符。

scanf("%d,%d,%d",&a,&b,&c);輸入時(shí)應(yīng)為:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應(yīng)為:非格式符“

,”作間隔符5,6,7↙a=5,b=6,c=7↙“a=“、”

,”、“b=“、

”c=“為間隔符816)如輸入的數(shù)據(jù)與輸出的類型不一致,scanf("a=%d,b=%d,c=%d",&a,&b,&c);輸入:雖然編譯能夠通過,但結(jié)果將不正確。scanf(”%d:%d”,&a,&b);應(yīng)輸入:a=5;b=6;c=7↙123:456↙82

scanf(”%d,%d\n”,&a,&b);應(yīng)輸入:scanf(”%d%d”,&a,&b);應(yīng)輸入:123,456↙1↙按格式控制符輸入123

456↙數(shù)據(jù)分割,多少個(gè)無關(guān)83scanf(”%d”,&a);scanf(”%d”,&b);應(yīng)輸入:或輸入:scanf(”%d\n”,&a);scanf(”%d”,&b);應(yīng)輸入:或輸入:123↙456↙123

456↙多少個(gè)無關(guān)123↙456↙123

456↙多少個(gè)無關(guān)84scanf(”%d%c%d”,&a,&b,&c);輸入:

應(yīng)輸入:12

#56↙bca12#56↙bca85intmain(){chara,b;

scanf("%c%c",&a,&b);

printf("%c%c\n",a,b);

scanf("%c%c",&a,&b);

printf("\n%c%c\n",a,b);return0;}

輸入:顯示:

輸入:顯示:MN↙MMN↙MN86說明:1.格式控制中不包含附加格式說明符m.n,一般不包含轉(zhuǎn)義字符(\n可以)。2.Double型輸入項(xiàng)必須使用如下格式說明:%lf、%le、%lg(輸出一樣)3.*

——在格式說明%后插入*表示跳過它所指定的列數(shù),如:

scanf(”%d%*5%d\n”,&a,&b);輸入:結(jié)果:用%f只能輸出6位小數(shù),輸出10位用%20.10lf

12398765456↙a值:123b值:456如果只有%*d則表示本輸入項(xiàng)再度輸入后不賦給相應(yīng)的變量87intmain(){inta;

scanf("%d",&a);

printf("%ld",a);return0;}

輸入:123

顯示:8061051Intmain(){longa;

scanf("%ld",&a);printf("%ld",a);return0;}

輸入:1234567890

顯示:1234567890884、在格式說明基本形式中加附加格式說明符①l——若輸出項(xiàng)為long型或unsignedlong型,則必須用下面格式說明控制:

%ld、%lx、%lo、%lu②h——若輸出項(xiàng)為short型或unsignedshort型,則可用下面格式說明控制:

%hd、%hx、%ho、%hu

。893.5.1C運(yùn)算符的種類、運(yùn)算優(yōu)先級(jí)和結(jié)合性1.運(yùn)算符的種類:P42表3-3(1)算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算:加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共七種。(2)關(guān)系運(yùn)算符:用于比較運(yùn)算:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。(3)邏輯運(yùn)算符:用于邏輯運(yùn)算:與(&&)、或(||)、非(!)三種。3.5運(yùn)算符和表達(dá)式90(4)位操作運(yùn)算符:參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算:位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。(5)賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種。(6)條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。(7)逗號(hào)運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。(8)指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。91(9)成員運(yùn)算符(分量運(yùn)算符):.,->(10)自增1,自減1運(yùn)算符:++,--(11)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)(12)下標(biāo)運(yùn)算符:[](13)求字節(jié)數(shù)運(yùn)算符:sizeof()

用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)。(14)負(fù)號(hào)運(yùn)算符:-(15)括號(hào)運(yùn)算符:()(函數(shù)調(diào)用)922.運(yùn)算符的優(yōu)先級(jí):P42表3-1歸納了C語言中各類運(yùn)算符的優(yōu)先級(jí)別(從高到低):

初等運(yùn)算符([]、()、->)單目運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符(不包括邏輯非運(yùn)算符!)賦值運(yùn)算符逗號(hào)運(yùn)算符933.運(yùn)算符的結(jié)合性:P42表3-3

l運(yùn)算符優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的運(yùn)算。一個(gè)運(yùn)算量兩側(cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。l運(yùn)算符的結(jié)合性:分為左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。

x-y+z(左結(jié)合性):

x=y=z(右結(jié)合性):與“-”號(hào)結(jié)合執(zhí)行x-y執(zhí)行+z執(zhí)行y=z執(zhí)行x=(y=z)94

“左結(jié)合性”:自左至右的結(jié)合方向。算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如:表達(dá)式x-y+z

(1)y應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算;(2)再執(zhí)行+z的運(yùn)算?!坝医Y(jié)合性”:自右至左的結(jié)合方向。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如:表達(dá)式x=y=z,由于“=”的右結(jié)合性,(1)先執(zhí)行y=z運(yùn)算;(2)再執(zhí)行x=(y=z)運(yùn)算。

C語言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤。953.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.算術(shù)運(yùn)算符:運(yùn)算符名稱功能示例表達(dá)式值*乘求兩個(gè)數(shù)的乘積3.6*4.014.4/除求兩個(gè)數(shù)的商5.0/22.5%求余求兩個(gè)整數(shù)相除的余數(shù)10%31+加求兩個(gè)數(shù)的和5+3.58.5-減求兩個(gè)數(shù)的差5-3.51.5962.算術(shù)表達(dá)式

由運(yùn)算符把常量、符號(hào)常量、變量、函數(shù)等連接起來的有意義的式子:如:a+=a*=(b=2)/(float)(int)(a=4.5)…..97表達(dá)式的運(yùn)算順序:

一般按從左至右、P42表3-3優(yōu)先級(jí)序數(shù)(1—先,15—后)進(jìn)行;(但賦值運(yùn)算、自增、自減、負(fù)號(hào)運(yùn)算、類型轉(zhuǎn)換等從右至左)優(yōu)先級(jí)高的先算98pow(a,2)*b/c+1.5*fabs(sin(x*3.14159)/180)/’a’數(shù)學(xué)函數(shù)a2b/c+1.5|sin(3.14159x)/180|/97

abs(整型)fabs(實(shí)型/整型)99算術(shù)運(yùn)算符的有關(guān)說明:兩個(gè)整數(shù)相除,如果有小數(shù)部分:1、結(jié)果為整數(shù):舍去小數(shù)部分,取整;2、結(jié)果為負(fù)數(shù):舍入方向不固定,采取“向零取整”的方法,即取整后向“0”靠攏。如:

-5/3=-11/2=01%2=15%7=51003.各類型數(shù)據(jù)的混合運(yùn)算:

在計(jì)算過程中、若某次運(yùn)算時(shí)碰到運(yùn)算對(duì)象為不同類型才需要進(jìn)行轉(zhuǎn)換,且由低向高轉(zhuǎn)換。注意邊計(jì)算邊轉(zhuǎn)換。但float型數(shù)據(jù)都要轉(zhuǎn)換成double型

char型與short型數(shù)據(jù)都要轉(zhuǎn)換成int型轉(zhuǎn)換規(guī)則如下圖:101float低高P45intchar,shortdoublelongunsignedlongdouble102例:設(shè)已定義floata=14.7;longc=5;計(jì)算13/5*a+(’a’+’b’)/c的步驟及轉(zhuǎn)換類型13/5*a+(’a’+’b’)/c12int2.0double14.7double229.4double97

int98

int3195int195long5long439long39.0double568.4double1034.強(qiáng)制類型轉(zhuǎn)換:格式:(類型名)(表達(dá)式)例.(int)a例.w+(float)(j%k)/5

整體的值為int類型,a及a的值為原類型值為float類型,j、k及它們的值仍為原來的類型104例:intmain(){floatx=3.6;intk;k=(int)x/5;printf(”x=%f,k=%d\n”,x,k);return0;}

結(jié)果x=3.600000,k=03105強(qiáng)制轉(zhuǎn)換運(yùn)算符的意義例如:1/2*sqrt(x+y)結(jié)果為0intfloatintdouble(float)1/2*sqrt(x+y)0.5取整一般寫為1.0/2106例如:inti;floatk;scanf(“%f”,&k);i=k%3;

是錯(cuò)誤的必須寫成

i=(int)k%3;因?yàn)檫\(yùn)算符%要求操作數(shù)為整型求整數(shù)的絕對(duì)值函數(shù)107例:intmain(){floatPI=3.14159;

ints,r=5;s=r*r*PI;

printf("s=%d\n",s);return0;}

運(yùn)行結(jié)果:s=78實(shí)型此語句將r和PI都轉(zhuǎn)換成double型計(jì)算結(jié)果為double型但由于s為整型,故賦值結(jié)果仍為整型,舍去了小數(shù)部分。1083.5.3賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符:=賦值表達(dá)式的語法格式: 變量名=表達(dá)式賦值表達(dá)式功能:先計(jì)算“=”號(hào)右邊表達(dá)式的值,然后把這個(gè)值賦給左邊的變量,實(shí)際上是將值存入左邊變量的地址所指的存儲(chǔ)單元中。例如:x=5x=y*5+z將整型常量5賦值給變量x

將整型常量y乘以5再加z賦值給變量x

109

三種常見形式的賦值表達(dá)式:一般賦值表達(dá)式:

自增自減表達(dá)式:復(fù)合賦值表達(dá)式:

t*=j/(2*j+1)k++s=6*a+1110賦值運(yùn)算符的說明:(1)賦值運(yùn)算符左側(cè)的操作數(shù)稱為“左值”,它必須指明一個(gè)確定的可存儲(chǔ)位置。如表達(dá)式a+b=5是錯(cuò)誤的,因?yàn)閍+b不能確定一個(gè)可存儲(chǔ)的位置。(2)賦值運(yùn)算符右側(cè)的操作數(shù)稱為“右值”,它可以是常量、變量、函數(shù)調(diào)用或任何合法的C語言表達(dá)式。(3)賦值運(yùn)算本身也是一個(gè)表達(dá)式,它也應(yīng)有一個(gè)值,值就是左操作數(shù)的新值。111賦值表達(dá)式舉例:a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)表達(dá)式的值為5,a,b,c的值均為5表達(dá)式的值為11,a值為11,c的值為6表達(dá)式的值為10,a為10,b為4,c為6表達(dá)式的值為5,a為5,b為10,c為21122.復(fù)合運(yùn)算符:

<變量>=<變量>+表達(dá)式

<變量>=<變量>–表達(dá)式

<變量>=<變量>*表達(dá)式

分別可用<變量>+=表達(dá)式

<變量>–=表達(dá)式

<變量>*=表達(dá)式

代替

…i=i+3sum=sum+y+8n=n–2sum=sum–3*wn=n*2sum=sum*(3+w)i+=3sum+=y+8n–=2sum–=3*wn*=2sum*=3+w113+=、–=、*=、/=%=求余<<=左移>>=右移&=按位與^=按位異或|=按位或10種復(fù)合的賦值運(yùn)算符:114例:設(shè)定義floata;intb;從右至左運(yùn)算表達(dá)式:

a+=a*=(b=2)/(float)(int)(a=4.5)

12int24.5float34int44.0float2.0double4.0double50.5double4.5float4.5double62.25double74.5double2.25double給a賦值給a賦值1153.賦值類型轉(zhuǎn)換:賦給變量的數(shù)據(jù)類型、大小一般不受限制唯一限制:1、double型數(shù)據(jù)賦給float型,截取前7位有效數(shù)據(jù)。2、float型數(shù)據(jù)賦給double型,有效數(shù)據(jù)擴(kuò)展到16位,但范圍不能溢出。3、若把實(shí)型數(shù)據(jù)賦給整型變量,則舍去小數(shù)部分。4、將整型數(shù)據(jù)賦值給浮點(diǎn)型變量,增加小數(shù)部分(小數(shù)部分值為0)。不允許給實(shí)型變量賦超出其所能表示范圍的數(shù)據(jù)116#include<stdio.h>intmain(){floata=6.16392e1;inti;charj;i=a;j=a;printf(”%d,%d,%c\n”,i,j,j);j=12;a=j;printf(”%f\n”,a);return0;}

結(jié)果:61,61,=12.000000

6161整形轉(zhuǎn)實(shí)型6.16392*101173.5.4增量運(yùn)算符和增量表達(dá)式(1)自增(前綴)、自減(后綴)運(yùn)算符①<變量>=<變量>+1

可用++<變量>

代替例:i=i+1、count=count+1

<變量>=<變量>–1

可用––<變量>

代替例k=k–1、num=num–1②<變量>++與

++<變量>

的區(qū)別

<變量>++

的值為變量增一前的值

++<變量>的值為變量增一的值同樣,<變量>––

的值為變量減一前的值

––<變量>的值為變量增一的值++i++count–

–k–

–num118#include<stdio.h>intmain(){inti,j,k;i=3;j=++i;i=3;k=i++;printf(”%d,%d\n”,j,k);i=3;j=––i;i=3;k=i––;printf(”%d,%d\n”,j,k);return0;}

j為4i為4i為3重新賦值k為i增1前的值i為3重新賦值結(jié)果:

4,32,3119intmain(){inti,j,k;i=3;j=++i;k=i++;printf(”%d,%d\n”,j,k);i=3;j=i––;k=––i;printf(”%d,%d\n”,j,k);return0;}

j為4i為4k為4,運(yùn)行之后i為5j為3,運(yùn)行之后i為2結(jié)果:4,43,1120(1)“++”和“--”運(yùn)算符只能用于變量,如2++和(x+y)++都是不合法的。(2)“++”和“--”運(yùn)算符的結(jié)合方向是“先右后左”。例如,j=-i++相當(dāng)于j=-(i++)。先取出i的值把-i賦值給j,然后i的值增1。(3)不要在同一表達(dá)式中多次使用“++”或“--”運(yùn)算符,其結(jié)果是不可預(yù)料的。例如: j=(i++)+(i++);

可以寫成:

k=i++;j=k+(i++);(4)i+++j,VC編譯器在處理時(shí)所遵循的規(guī)則是“盡可能從左至右結(jié)合最多的字符組成一個(gè)運(yùn)算符”,因此i+++j將被解釋成(i++)+j。1213.5.5關(guān)系運(yùn)算符和關(guān)系表達(dá)式

由關(guān)系運(yùn)算符、圓括號(hào)把兩個(gè)表達(dá)式連接起來的式子稱為關(guān)系表達(dá)式。——表示條件若所表示的條件成立、則其值為1(非0)、否則其值為0。關(guān)系運(yùn)算符:<、<=、>、>=、==、!=例:

a>=2、3>9、’a’!=(a=8)、

x+(y=3)==k*z、(a!=3)>(k<l)978表達(dá)式值為1優(yōu)先成立為1不成立為0非=122==!=優(yōu)先級(jí)從左向右結(jié)合性高低<<=>>=123關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,但高于賦值運(yùn)算符。

x+y<s+t

等價(jià)于(x+y)<(s+t)關(guān)系表達(dá)式的值是邏輯值,只有“真”、“假”兩種。當(dāng)x=1,y=2時(shí):

x<y

是真的,值為1

x>y

是假的,值為0

x!=y

是真的,的值為1

x==y

是假的,值為0

x==y<0

等價(jià)于x==(y<0),即x==0,是假的,值為0124數(shù)學(xué)中多個(gè)條件,例a>b>c>d

應(yīng)表示為a>b&&b>c&&c>d不能順手也寫為

a>b>c>d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論