C語言程序設(shè)計課件:數(shù)據(jù)類型、運算符和表達(dá)式_第1頁
C語言程序設(shè)計課件:數(shù)據(jù)類型、運算符和表達(dá)式_第2頁
C語言程序設(shè)計課件:數(shù)據(jù)類型、運算符和表達(dá)式_第3頁
C語言程序設(shè)計課件:數(shù)據(jù)類型、運算符和表達(dá)式_第4頁
C語言程序設(shè)計課件:數(shù)據(jù)類型、運算符和表達(dá)式_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)類型、運算符和表達(dá)式C語言程序設(shè)計本章問題2.01.如何準(zhǔn)確地書寫各種常量?2.如何定義(說明)各種類型的變量?3.如何準(zhǔn)確地利用各種運算符書寫表達(dá)式?4.如何準(zhǔn)確地對數(shù)據(jù)進(jìn)行輸入輸出?目錄content數(shù)據(jù)類型2.1常量2.2變量2.3運算符和表達(dá)式2.4位運算2.5各類數(shù)值型數(shù)據(jù)間的混合運算2.6輸入輸出的進(jìn)一步討論2.72.1數(shù)據(jù)類型數(shù)據(jù)處理是計算機(jī)的基本功能之一,數(shù)據(jù)處理的對象是數(shù)據(jù)。在高級語言程序設(shè)計中,數(shù)據(jù)在計算機(jī)中的存儲長度決定數(shù)據(jù)值的范圍。為了數(shù)據(jù)存儲和處理的需要,C編譯程序?qū)?shù)據(jù)劃分為不同的數(shù)據(jù)類型,并為每一種數(shù)據(jù)類型規(guī)定了在內(nèi)存中的存儲單元字節(jié)數(shù)和對該數(shù)據(jù)類型數(shù)據(jù)所能進(jìn)行的運算。2.1數(shù)據(jù)類型在C語言中,按被定義數(shù)據(jù)的性質(zhì)、表達(dá)形式、占存儲空間以及構(gòu)造特點其數(shù)據(jù)類型分為:2.2常量

2.2.1

整型常量十進(jìn)制整型常量:例如56、-100、2004;八進(jìn)制整常量:以0開頭,數(shù)碼取值為0~7。如:017(十進(jìn)制為15)、0101(十進(jìn)制為65)、0177777(十進(jìn)制為65535)十六進(jìn)制整常量:前綴為0X或0x,其數(shù)碼取值為0~9,A~F或a~f。如:0X2A(十進(jìn)制為42)、0xA0(十進(jìn)制為160)、0XFFFF(十進(jìn)制為65535);整型常量的后綴:長整型數(shù)是用后綴“L”或“l(fā)”來表示的。如:158L(十進(jìn)制為158),012L(十進(jìn)制為10)2.2.2浮點型常量兩條規(guī)則:一個浮點數(shù)可以無整數(shù)部分或小數(shù)部分,但不能二者全無;

一個浮點數(shù)可以無小數(shù)點或指數(shù)部分,但不能二者全無。兩種表示形式:十進(jìn)制小數(shù)形式指數(shù)形式(1)十進(jìn)制小數(shù)形式:由數(shù)字0~9和小數(shù)點組成(注意必須有小數(shù)點)如:0.0、3.14、.56、300.(2)指數(shù)形式:

[±][整數(shù)部分][.][小數(shù)部分][(e,E)±n][后綴]如:-1.23456e+42.2.3字符型常量字符型常量:用單引號括起來的一個字符,單引號中的內(nèi)容不能是單引號,雙引號和反斜線。字符常量的值就是該字符的ASCII碼值。一個字符常量在內(nèi)存中只占一個字節(jié)如:’a’、’C’、’’=’、’+’、’?’轉(zhuǎn)義字符是一種特殊的字符型常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義。廣義地講,C語言字符集中的任何一個字符均可用轉(zhuǎn)義字符來表示,(常用的轉(zhuǎn)義字符說明見下頁)2.2.3字符常量--轉(zhuǎn)義字符表示字符類型字符表示字符含義ASCII碼值“\ddd”表示“\xhh”表示字母‘a(chǎn)’字母(a)97\141\x61數(shù)字‘0’數(shù)字(0)48\060\x30特殊字符‘\a’鳴鈴7\007\x07‘\’’單引號符(’)96\140\x60‘\”’雙引號符(”)34\042\x22‘\\’反斜線符(\)92\134\x5C空格符‘\n’回車換行10\012\x0A‘\f’走紙換頁12\014\x0C不能顯示的字符‘\0’空字符0\000\x00‘\b’退格8\010\x08‘\r’回車13\015\x0D八進(jìn)制數(shù)2.2.3轉(zhuǎn)義字符使用例#include<stdio.h>voidmain(){charch;ch=‘\44’;//將ASCII碼為44(八進(jìn)制)即36(十進(jìn)制)的字符賦給chprintf(“chis%c\n”,ch);//輸出字符,ASCII碼為36對應(yīng)的字符為$}運行結(jié)果:chis$\ddd的轉(zhuǎn)義字符形式2.2.4字符串常量字符串常量:由一對雙引號括起的字符序列如:”CHINA”,”Cprogram”等。字符串“CHINA”在內(nèi)存中所占的字節(jié)為:‘C’‘H’‘I’‘N’‘A’‘\0’字符型常量與字符串常量區(qū)別1)字符常量由單引號括起來,字符串常量由雙引號括起來。2)字符常量只能是單個字符,字符串常量則可以含一個或多個字符。3)可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。4)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符數(shù)加1。增加的一個字節(jié)中存放字符’\0’(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。2.2.5符號常量2.2.6其定義的一般形式為:

#define標(biāo)識符常量其功能是用標(biāo)識符代替后面常量。如:#defineG9.8使用符號常量的好處是:含義清楚;能做到“一改全改”。#include<stdio.h>#definePI3.14159//定義符號常量PI,值為3.14159voidmain(){doubleradius=10.0;doubleperimeter;doublearea;

perimeter=2*PI*radius;//使用符號常量

area=PI*radius*radius;//使用符號常量

printf(“radius=%lf,perimeter=%lf,area=%lf\n”,\

radius,perimeter,area);}運行結(jié)果:radius=10.000000,perimeter=62.831800,area=314.159000變量2.3變量:在程序執(zhí)行過程中,值可以改變的量。變量定義的格式:

<存儲類型>數(shù)據(jù)類型變量名<=初值>;

如:

inti;

//定義了一個int型(整型)變量i;

shortinta;unsignedintcd;//整型變量

longintb;unsignedlongintud;//整型變量

charcc;signedcharc2;//字符型變量

floatf1;

//浮點型變量

doubledf;longdoubleldf;

//浮點型變量

intj=2;

變量2.3一條語句定義多個相同數(shù)據(jù)類型變量,格式為:

<存儲類型>數(shù)據(jù)類型變量名表;

如:

inti,j,k;

//i,j,k是變量名,int是數(shù)據(jù)類型。

doubled1,d2,d3,d4;//定義d1,d2,d3,d4四個雙精度型變量。

floatf1=1.0,f2=2.0,f3=5.0;

//定義三個浮點型變量并分別賦值。一種特殊的變量--指針變量2.3.1指針變量:用于存儲地址的變量定義格式為

<存儲類型>數(shù)據(jù)類型*變量名<=地址值>;

如:1)float*pf;//定義一個浮點型指針變量

2)在預(yù)先定義整型變量i基礎(chǔ)上,可定義指針變量pa:

int*pa=&i;

變量命名遵循的原則2.3.2必須是以英文字母或下劃線開頭的,由字母、數(shù)字和下劃線組成的字符序列。不能與C語言的關(guān)鍵字(保留字)重名,C語言對變量名的大小寫敏感。另外,在C語言的長期使用過程中還形成了一些約定俗成的規(guī)則:盡量使變量名能夠表達(dá)出該變量的含義。用戶最好不要用下劃線來作為變量名的開頭。

習(xí)慣上符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符可大小寫結(jié)合(不全用大寫)。BC31中數(shù)據(jù)類型的長度與值域2.3.3類型名說明值域字節(jié)數(shù)int整型-32768~327672signedint有符號整型-32768~327672unsignedint無符號整型0~655352shortint短整型-32768~327672signedshortint有符號短整型-32768~327672unsignedshortint無符號短整型0~655352longint長整型-2147483648~21474836474signedlongint有符號長整型-2147483648~21474836474unsignedlongint無符號長整型0~42949672954float單精度浮點型約±|3.4×10-38|~±|3.4×1038|

有效數(shù)位7位4double雙精度浮點型約±|1.7×10-308|~±|1.7×10308|有效數(shù)位15位8longdouble長雙精度浮點型約±|3.4×10-4932|~±|3.4×104932|有效數(shù)位18位10char字符型-128~1271signedchar有符號字符型-128~1271unsignedchar無符號字符型0~2551字符變量與整型量之間的聯(lián)系#include<stdio.h>voidmain(){charch='a';inti=ch;printf("%cASCIIis%d\n",ch,ch);//將字符量按整型量處理

printf("%cASCIIis%d\n",i,i);//將整型量按字符量處理}運行結(jié)果:aASCIIis97aASCIIis972.3.4運算符和表達(dá)式2.4運算符分類:按運算對象的數(shù)目:

單目運算符

雙目運算符

三目運算符按照其功能:

算術(shù)運算符、賦值運算符、關(guān)系運算符、邏輯運算符、

位運算符、自增自減運算符、條件運算符、逗號運算符等等。由運算符和運算量所組成的符合C的語法的算式。C語言中的表達(dá)式分類:

算術(shù)表達(dá)式、關(guān)系表達(dá)式、

邏輯表達(dá)式、賦值表達(dá)式、

條件表達(dá)式、逗號表達(dá)式混合表達(dá)式等。

注:無論什么表達(dá)式,都會返回一個結(jié)果(或值)。算術(shù)運算符與算術(shù)表達(dá)式2.4.1算術(shù)運算符使用形式含義+單目或雙目運算符單目運算表示正號,雙目運算表示加法-單目或雙目運算符單目運算表示減號,雙目運算表示減法*雙目運算符乘法運算/雙目運算符除法運算%雙目運算符取模運算(求余數(shù))運算規(guī)則:1. +、-、*、/運算符的運算量可為任何整型或浮點型的常量、變量、有返回值的函數(shù)以及表達(dá)式。2. 在x/y中,表達(dá)式y(tǒng)的取值也不能為0,否則將出現(xiàn)錯誤。3. %運算符要求運算量必須是整型,且%后面的運算量不能為0。4.當(dāng)雙目運算符的兩個操作數(shù)的數(shù)據(jù)類型相同時,它們的運算結(jié)果的類型與操作數(shù)類型相同。5.當(dāng)雙目運算符的兩個操作數(shù)的類型不同時,運算前遵循類型的一般轉(zhuǎn)換規(guī)則將運算量自動轉(zhuǎn)換成相同的類型,運算結(jié)果的類型與轉(zhuǎn)換后的運算量的類型相同五種算術(shù)運算示例#include<stdio.h>voidmain(){intx,y;floatx1,y1;x=15;y=6;x1=15.0;y1=6.0;

printf("x=%d,y=%d\n",x,y);printf("x+y=%d\n",x+y);

printf("x–y=%d\n",x-y);

printf("x*y=%d\n",x*y);

printf("x/y=%d....%d\n",x/y,x%y);printf("x1/y1=%f\n",x1/y1);}運行結(jié)果:x=15,y=6x+y=21x–y=9x*y=90x/y=2....3x1/y1=2.500000例2.4特別關(guān)注求余運算關(guān)系運算符與關(guān)系表達(dá)式2.4.2C語言中的關(guān)系運算符:

<(小于)<=(小于或等于)==(等于)>(大于)>=(大于或等于)!=(不等于)說明:1)關(guān)系運算符都是雙目運算符,它用來比較兩個運算量之間的關(guān)系。2)用關(guān)系運算符將前、后兩個運算量連接起來的式子稱為“關(guān)系表達(dá)式”,這兩個運算量可以是任意表達(dá)式。3)當(dāng)關(guān)系表達(dá)式成立時,表達(dá)式的結(jié)果為整數(shù)1,否則為整數(shù)0。

關(guān)系表達(dá)式示例#include<stdio.h>voidmain(){charch1,ch2;

ch1='a';ch2='b';printf("%c==%c----%d\n",ch1,ch2,ch1==ch2);printf("%c<%c----%d\n",ch1,ch2,ch1<ch2);printf("%c>%c----%d\n",ch1,ch2,ch1>ch2);printf("%c<=%c----%d\n",ch1,ch2,ch1<=ch2);printf("%c>=%c----%d\n",ch1,ch2,ch1>=ch2);printf("%c!=%c----%d\n",ch1,ch2,ch1!=ch2);}運行結(jié)果:a==b----0a<b----1a>b----0a<=b----1a>=b----0a!=b----1例2.5邏輯運算符與邏輯表達(dá)式2.4.3C語言中的邏輯運算符&&(邏輯與)||(邏輯或)!(邏輯非)簡單示例:

X=0;Y=2;則:X&&Y----0

X||Y----1

!Y----0表達(dá)式X表達(dá)式Y(jié)!X!YX&&YX||Y非0非00011非0001010

非01001001100邏輯運算真值表邏輯運算符&&使用示例#include<stdio.h>voidmain(){

inta,b,c,max;

a=10;

b=20;

max=b;

c=(a>b)&&(max=a);

printf(“a=%d,b=%d,c=%d,max=%d\n",a,b,c,max);}

例2.6規(guī)定:1)對于邏輯與(&&)運算,若左表達(dá)式為“假”,則無需判斷右表達(dá)式的值即可以斷定邏輯表達(dá)式的值為假;只有當(dāng)左表達(dá)式為“真”時,才需要繼續(xù)判斷右表達(dá)式。2)對于邏輯或(||)運算,當(dāng)左表達(dá)式為“真”時,則無需判斷右表達(dá)式的值即可以斷定邏輯表達(dá)式的值為真;只有當(dāng)左表達(dá)式為“假”時,才需要繼續(xù)判斷右表達(dá)式。

運行結(jié)果:a=10,b=20,c=0,max=20(a>b)的結(jié)果為0,不再運算右表達(dá)式(max=a)自增和自減運算2.4.4自增、自減運算符分別為:(單目運算符)

++(自增) --(自減)

++和--分別都有兩種不同的形式:

前置式:

++i、--i

后置式:i++、i--運算說明:1.前置運算是變量先自增1或自減1后,再參與其他的運算,即先變后用。如:x=0;y=--x+x;

結(jié)果為x=-1,y=-22.后置運算是該變量先以原來的值參加其它運算,然后再自增1或自減1,即先用后變;如:x=10;y=x+++x;結(jié)果為x=11,y=20;3.自增自減運算符只能作用于變量,不能用于常量和表達(dá)式。自增自減運算符的運算示例#include<stdio.h>voidmain(){

intx,y;

x=0;

y=10;

printf("x=%d,y=%d\n",x++,--y);printf("x=%d,y=%d\n",x,y);

printf("x=%d,y=%d\n",++x,y--);}例2.7變量x先輸出值,再自增,變量y先自減,再輸出值運行結(jié)果:x=0,y=9x=1,y=9x=2,y=9變量x先自增,再輸出值,變量y先輸出值,再自減賦值運算符與賦值表達(dá)式2.4.5

基本賦值運算符“=”是雙目運算符,其表達(dá)式形式為:

左值表達(dá)式=右值表達(dá)式

如:inti,j;charm,n;floatx,y;doublez;j=i

i和j的類型相同,無需轉(zhuǎn)換,直接將i的值賦給ji=m

m由char型向int型轉(zhuǎn)換,將轉(zhuǎn)換后的值賦給i

z=x*i

x*i的結(jié)果為double型,然后賦值給zi=m<n

m<n的結(jié)果為整型,無需轉(zhuǎn)換,直接將值賦給ii=j=10

這是一個多重賦值表達(dá)式,賦值運算符按從右至左結(jié)合,即相當(dāng)于i=(j=10),先將10賦給j,而括號中的賦值表達(dá)式(j=10)的值就是賦值后的y的值,再將其賦給i。賦值運算符與賦值表達(dá)式2.4.5

復(fù)合賦值運算符是在賦值運算符“=”前加上其他運算符構(gòu)成。C語言中的復(fù)合賦值運算符有10種:+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=。其表達(dá)式形式為:

左值表達(dá)式op=右值表達(dá)式

等價于左值表達(dá)式=左值表達(dá)式op右值表達(dá)式。

如:

i+=j;

等價于i=i+j;

x*=y–5;

等價于x=x*(y-5)m<<=2;

等價于m=m<<2條件運算符與條件表達(dá)式2.4.6一般形式:

表達(dá)式1?表達(dá)式2:表達(dá)式3操作過程:

判斷表達(dá)式1的值,如果為非0值,則求解表達(dá)式2的值,并將其作為該條件表達(dá)式的值;

如果表達(dá)式1的值為0,則求解表達(dá)式3的值,并將其作為該條件表達(dá)式的值。

示例:如a=10,b=-5,求以下條件表達(dá)式的結(jié)果值。

c=b>0?(a+b):(a-b);結(jié)果為c=15詳細(xì)代碼見p31例2.8表達(dá)式1為關(guān)系表達(dá)式,其結(jié)果值為0計算表達(dá)式3的結(jié)果作為整個條件表達(dá)式的結(jié)果。逗號運算符與逗號表達(dá)式2.4.7逗號運算符是雙目運算符,用它構(gòu)成的逗號表達(dá)式形式為:

表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n運算過程:先求表達(dá)式1的值,然后再求表達(dá)式2的值,依次計算下去,最后表達(dá)式n的值也就是該逗號表達(dá)式的值。示例1:如果定義整型變量a和b,且a=10,求以下表達(dá)式的結(jié)果;

b=a++,a%3;

結(jié)果為:b=2

思考:如果b=a++,a%3,換成

b=a++,a++,a%3結(jié)果為多少

?

表達(dá)式1的結(jié)果值10表達(dá)式2的結(jié)果為2,同時也是整個逗號表達(dá)式的結(jié)果,然后把2賦值給b。?位運算2.52.5.12.5.22.5.32.5.52.5.66.按位取反運算符“~”5.二進(jìn)制右移運算符“>>”1.按位與運算符“&”2.按位或運算符“|”3.按位異或運算符“^”2.5.44.二進(jìn)制左移運算符“<<”按位與運算符“&”2.5.1按位與運算是對兩個操作數(shù)逐位“求與”。運算真值表:示例:a=0x96,b=0x80,求a&b.

位1

位2

位1&位2000010100111(1)將某些位清零例如:a=0x55,要將a的低四位清零,那就要將a與一0xf0進(jìn)行按位與運算。運算過程如下:(2)取數(shù)中的特定位例如a=0x55,要將保持a的低四位而其它位清零,那就要將a與0x0f進(jìn)行按位與運算。運算過程如下:按位與的作用2.5.1按位或運算符“|”2.5.2按位或運算:對兩個操作數(shù)逐位“相或”。運算真值表示例:a=0x36,b=0x55,求a|b。

位1

位2

位1|位2000011101111(1)將數(shù)的某些位置1

如a=0x55,要將a的低四位置1,那就要將a與0x0f進(jìn)行按位或運算運算過程如下:(2)把一串二進(jìn)制數(shù)連接到另一串二進(jìn)制數(shù)后在實際應(yīng)用中有時也需要將一串二進(jìn)制數(shù)連接到另一串二進(jìn)制數(shù)后。如a=0x55,要連接的數(shù)據(jù)為8位二進(jìn)制串0xaa.運算過程如下:按位或的作用2.5.2按位異或運算符“^”2.5.3按位異或運算:將兩個操作數(shù)逐位“相異或”。運算真值表:示例:

a=0x36,b=0x0f,求a^b.

位1

位2

位1^位2000011101110從所得的結(jié)果看,某位要保持不變就異或0,某位要取反就異或1。二進(jìn)制左移運算符“<<”2.5.4運算規(guī)則:把數(shù)據(jù)向左移動若干位,移出左邊界的所有位都將丟失,右側(cè)新增加的位為0。示例:inta=4,a<<2的結(jié)果為16

二進(jìn)制

00000100<<2為00010000二進(jìn)制右移運算符“>>”2.5.5運算規(guī)則:二進(jìn)制右移運算符把數(shù)據(jù)向右移動若干位,移出右邊界的所有位都將丟失,左側(cè)的新位的補(bǔ)充遵循下面的規(guī)則:(1)對于無符號數(shù),右移時左側(cè)的新位一律補(bǔ)0,稱為“邏輯右移”(2)對于有符號數(shù),若符號位是0,則左側(cè)新位一律補(bǔ)0;若符號位是1,則左側(cè)新位一律補(bǔ)1,稱為“算術(shù)右移”示例1:變量a無符號數(shù),a=8,二進(jìn)制表示為00001000,a>>2(a右移兩位),得:00000010,結(jié)果為2示例2:變量b有符號數(shù),b=-10,二進(jìn)制補(bǔ)碼為11110110,b>>1(b右移一位,左側(cè)補(bǔ)1),得:11111011,結(jié)果為-5按位取反運算符“~”2.5.6

按位取反運算符是將操作數(shù)進(jìn)行逐位“取反”。例如:變量a=0x6a,二進(jìn)制表示為01101010,按位取反后為10010101,所以~a的結(jié)果為0x95。各類數(shù)值型數(shù)據(jù)間的混合運算2.62.6.1

自動類型轉(zhuǎn)換在C語言中字符型、整型和浮點型數(shù)據(jù)可以在同一個表達(dá)式中使用。C語言編譯系統(tǒng)會按照一定的準(zhǔn)則自動進(jìn)行類型轉(zhuǎn)換。當(dāng)出現(xiàn)下列三種情況時發(fā)生自動類型轉(zhuǎn)換:當(dāng)雙目運算符的兩個運算量結(jié)果的類型不相同且進(jìn)行算術(shù)運算時;當(dāng)一個值賦予一個不同類型的變量時;函數(shù)調(diào)用,實參與形參類型不同時。(后面章節(jié)介紹)(本節(jié)中重點介紹前兩種轉(zhuǎn)換)轉(zhuǎn)換規(guī)則:值域較窄的類型向值域較寬的類型轉(zhuǎn)換(“值域”就是類型所能表示的值的最大范圍)算術(shù)轉(zhuǎn)換遵循的轉(zhuǎn)換方向如圖所示:2.6.1.1算術(shù)運算時的自動類型轉(zhuǎn)換算術(shù)運算時的自動類型轉(zhuǎn)換示例例如:floatf=3.6;intn=6;longk=21;doubless=f*n+k/2;doubledoublelong

double

double2.6.1.1賦值轉(zhuǎn)換將右值表達(dá)式結(jié)果的類型轉(zhuǎn)成左值表達(dá)式的數(shù)據(jù)類型。賦值轉(zhuǎn)換具有強(qiáng)制性,它不受算術(shù)轉(zhuǎn)換規(guī)則的約束,轉(zhuǎn)換結(jié)果的類型完全由左值表達(dá)式的類型決定。示例:inti,j;

floatm;

則表達(dá)式i=m*j的轉(zhuǎn)換過程為:

賦值運算符右值表達(dá)式的值為double類型,經(jīng)過賦值轉(zhuǎn)換強(qiáng)制變成int類型。2.6.1.2賦值運算時的自動類型轉(zhuǎn)換(隱式轉(zhuǎn)換)一般形式為:

(類型名)表達(dá)式作用:將表達(dá)式轉(zhuǎn)換成“類型名”所指定的類型。示例:floatx=6.5; inty=int(x);后一語句將單精度x強(qiáng)制轉(zhuǎn)換為int類型,并賦值給y,則y的值為6,但是變量x的類型仍是單精度浮點型,變量x仍為6.5。2.6.1.3強(qiáng)制類型轉(zhuǎn)換(顯示轉(zhuǎn)換)類型變換小結(jié):

無論是自動類型轉(zhuǎn)換還是強(qiáng)制類型轉(zhuǎn)換,都只是將變量或常量的值的類型進(jìn)行暫時的轉(zhuǎn)換,用于參與運算和操作,而變量和常量本身的類型和數(shù)值并沒有改變。運算符的優(yōu)先級2.6.2當(dāng)在一個表達(dá)式中出現(xiàn)多個不同運算符的時候,運算符的優(yōu)先級決定運算順序,結(jié)合性決定了運算是從左往右還是從右往左。示例:intx,y,z;

z=y<=-x+2&&!x;

表達(dá)式中各運算符的優(yōu)先順序為:

“!”=“-”(負(fù)號運算符) >“+”(加法運算符) >“<=” >“&&” >“=”。因此上式等價于z=(y<=(-x+2))&&(!x);表2-8列出了C語言中運算符的優(yōu)先級和結(jié)合性。(見課本P37)

輸入輸出的進(jìn)一步討論2.72.7.1

格式化輸出函數(shù)printf函數(shù)調(diào)用形式:

printf(“輸出格式”,輸出列表);格式字符說明d以帶符號的十進(jìn)制形式輸出整數(shù)(整數(shù)不輸出符號)o以八進(jìn)制無符號形式輸出整數(shù)x,X以十六進(jìn)制無符號形式輸出整數(shù),用x則輸出十六進(jìn)制數(shù)的a-f時以小寫形式輸出.用X時,則以大寫字母輸出u以無符號十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個字符s輸出字符串f以小數(shù)形式輸出單雙精度數(shù),隱含輸出6位小數(shù)e,E以指數(shù)形式輸出實數(shù),如用"E",則輸出時,指數(shù)以大寫"E"表示(如1.2E+02)常用的輸出格式控制符格式化輸出函數(shù)printf2.7.1附加格式說明符表:

字符說明字母l用于長整型整數(shù),可加在格式符d,o,x,u前面m(代表一個正整數(shù))數(shù)據(jù)最小寬度n(代表一個正整數(shù))對實數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠;無"-"時,在域內(nèi)向右靠(1)整數(shù)輸出1)%d,按十進(jìn)制整數(shù)型數(shù)據(jù)的實際長度輸出。2)

%md,m為指定的輸出字段的最小寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實際位數(shù)輸出。

示例:

printf("%3d,%3d",x,y);若x=21,y=12345,則輸出結(jié)果為:【空格】21,123453)%ld,輸出長整型數(shù)據(jù)。示例:若定義longintx=12345678;則采用如下形式輸出x正確:

printf("%ld",x);則輸出結(jié)果為:12345678格式化輸出函數(shù)printf2.7.1上例中如用“%d”輸出,就會發(fā)生錯誤,因為整型數(shù)據(jù)的范圍為-32768~32767。對于long型數(shù)據(jù),應(yīng)當(dāng)用“%ld”格式輸出。對于長整型數(shù)據(jù),也可以指定字段寬度,例如將上例中的“%ld”改為“%10ld”(2)字符串輸出1)

%s,輸出指定的字符串

例如:printf("%s","CHINA");

輸出“CHINA”字符串(不包括雙引號)。2)

%ms,輸出的字符串占m列,如字符串本身長度大于m,則突破m的限制,將字符串全部輸出。若串長小于m,則左補(bǔ)空格。3)

%-ms,如果串長小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。4)

%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。5)

%-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則m自動取n值,即保證n個字符正常輸出。格式化輸出函數(shù)printf2.7.1字符串格式化輸出例例2.9#include<stdio.h>voidmain(){printf("%3s,%7.2s,%.4s,%-5.3s\n","HUS

溫馨提示

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

評論

0/150

提交評論