C語言基本數據類型_第1頁
C語言基本數據類型_第2頁
C語言基本數據類型_第3頁
C語言基本數據類型_第4頁
C語言基本數據類型_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第二講基本數據類型什么是數據類型?著名計算機科學家NikiklausWirth提出一個公式

數據結構+算法=程序

實際上結構化的程序設計可以表示為:程序=算法+數據結構+程序設計方法+語言工具和環境C的數據結構就是以數據類型的形式出現的知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達式中數據類型轉換2.1C語言的數據類型

C語言提供的數據類型分類如下:

知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達式中數據類型轉換2.2數值數據的表示C語言中使用的數值數據有兩種:整數和浮點小數。整數

表示形式:十進制:123 456八進制:011 072十六進制:0x11 -0x32

一般整數的存儲空間為2個字節,取值范圍一般為

-215~215-1,即-32768~32767。如果超過這個范圍,只有使用占4個字節的長整型數,即在整數后面加上一個字母L(大小寫均可),此時取值范圍可以擴大到-231~231-1,即-2147483648~2147483647。

C語言中使用的數值數據有兩種:整數和浮點小數。浮點小數

C語言中的浮點小數描述的是實數,可以采用十進制小數形式或者指數形式表示。十進制小數形式:包含整數部分、小數點和小數部分。如1.3234.0注意:其中小數點不能省略,34與34.0不是一樣的。指數形式:包含尾數部分、字母E或e和階碼。例如2.78E12。注意:尾數部分不能省、階碼必須是整數。浮點小數一般為單精度浮點類型,占用4個字節,有效位數6~7位,如果需要精度特別高,可以采用雙精度浮點類型,有效位數可以達到16~17位。知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達式中數據類型轉換2.3文字數據的表示C語言把文字數據分為兩種類型:單個字符和字符串。單個字符

單個字符的表現形式是由單引號括起來的一個字符,例如:’a’

‘A’

‘+’

‘5’

‘$’。其中單引號、雙引號和反斜杠的表現形式比較特殊,分別是’\’’、’\”’、’\\’。在C語言中轉義字符被認為是具有特殊意義的單個字符,例如’\n’,代表一個換行符。單個字符在內存中只占用1個字節,其存儲的內容為該字符在ASCII碼表中對應的數值。

C語言把文字數據分為兩種類型:單個字符和字符串。字符串

字符串是由雙引號括起來的字符序列,例如:”thisisaprogram.”

”IloveC”

。字符串中的字符按照從左到右的順序,依次存儲在一段連續的空間里,其中每一個字符占用一個字節,其內容為該字符在ASCII碼表中對應的數值。注意:C語言的字符串在實際存儲時,將自動在字符串尾部加了一個結束標志‘\0’(其ASCII碼值為0)。思考:‘a’

“a”

是相同的嗎?無雞鴨也可無魚肉也可蘿卜青菜不可少不得大米無雞鴨也可,無魚肉也可,蘿卜青菜不可少,不得大米。無雞,鴨也可,無魚,肉也可,蘿卜青菜不可,少不得大米。知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5C語言類型修飾符2.6表達式中數據類型轉換2.4變量的定義和賦值C語言中的數據有兩種基本形式:常量和變量。常量的值是固定的,變量是可以改變的

變量的定義

類型標識符變量名;

變量在定義時要注意以下幾個問題:變量的命名要符合C語言規定的標識符的命名規則,即只能由字母、數字和下劃線組成,首字母必須為字母或下劃線。此外C語言中規定的有特殊用途的關鍵字,例如int、float、if等,不能作為變量名稱。

ab2stu1x1_1sum_name1正確

2acstu-1len#1elseintfloat不正確C語言中大小寫是敏感的。但是習慣上,C中的變量一般用小寫字母表示。變量的定義變量的數據類型決定了它的存儲類型,即該變量占用的存儲空間。所以定義變量類型,就是為了給該變量分配存儲空間,以便存放數據。基本的變量類型及其存儲空間見表2.1:

類型名稱存儲空間取值范圍實例int整型2個字節介于-32768~32767的整數inti,j;float單精度浮點型4個字節實數,有效位數6~7位floatx;double雙精度浮點型8個字節實數,有效位數15~16位doubley;char字符型1個字節ASCII碼字符,或-128~127的整數charc;變量的賦值變量需要預置一個值,即賦值。賦值操作通過賦值符號“=”把右邊的值賦給左邊的變量:

變量名=表達式;

例如x=3;a=a+1;f=3*4+2;

注意數學中的“=”符號不同于C語言中的賦值符號“=”。其中需要注意的是:如果賦值時兩側類型不一致時,系統將會作如下處理:

將實數賦給一個整型變量時,系統自動舍棄小數部分。

將整數賦給一個浮點型變量時,系統將保持數值不變并且以浮點小數形式存儲到變量中。

當字符型數據賦給一個整型變量時,不同的系統實現的情況不同,一般當該字符的ASCII值小于127時,系統將整型變量的高字節置0、低字節存放該字符的ASCII值。

變量在定義的同時也可以賦初值,稱作變量的初始化。字符型變量的值可以是字符型數據、介于-128~127的整數或者轉義字符。/*--------------------------------------------

程序L2_1.C功能:賦值時類型自動的轉換示例。---------------------------------------------*/#include<stdio.h>main(){inta,x;floatf;a=3.9;f=12;x='A';printf("a=%d,f=%f,x=%d\n",a,f,x);}運行結果:a=3,f=12.000000,x=65/*---------------------------------------------------------------------

程序L2_2.C功能:將字符'A'賦值給字符變量的四種方法。

------------------------------------------------------------------*/

#include<stdio.h>main(){charc1,c2,c3,c4;c1='A';c2=65;c3='\101';c4='\x41';printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);}思考:c1,c2,c3,c4加上32輸出結果是什么?加上256呢?知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達式中數據類型轉換2.5C語言類型修飾符基本類型可以帶修飾性前綴,即類型修飾符,擴大C語言基本數據類型的使用范圍。C語言共有4種類型修飾符:

long長型short短型

signed有符號型unsigned無符號型longint(簡寫為long)型的存儲長度為4個字節,用于存儲整數超過int型取值范圍的情況。longdouble型存儲長度16個字節,約24位有效數字,取值范圍超過double型。有符號型signed和無符號型unsigned適用于char型、int型和long型三種類型,區別在于它們的最高位是否作為符號位。unsignedchar型取值范圍0~255,unsignedint(簡寫為unsigned)型取值范圍0~65535,unsignedlong型取值范圍0~232-1。/*---------------------------------------------------------------

程序L2_3.C功能:類型修飾符long和unsigned的使用。

--------------------------------------------------------------*/

#include<stdio.h>main(){chara1,b1;unsignedchara2,b2;intx1,y1;longx2,y2;a1=127;b1=129;a2=127;b2=129;x1=32767;y1=32769;x2=32767;y2=32769;printf("a1=%d,a2=%u,b1=%d,b2=%u\n",a1,a2,b1,b2);printf("x1=%d,x2=%ld,y1=%d,y2=%ld\n",x1,x2,y1,y2);}知識要點2.1C語言的數據類型2.2數值數據的表示2.3文字數據的表示2.4變量的定義和賦值2.5

C語言類型修飾符2.6表達式中數據類型轉換2.6表達式中數據類型轉換自動類型轉換C語言規定,不同類型的數據在參加運算前會自動轉換成相同類型,再進行運算。轉換的規則是:如果運算的數據有float型或double型,自動轉換成double型再運算,結果為double型。如果運算的數據中無float型或double型,但是有long型,數據自動轉換成long型再運算,結果為long型。其余情況為int型。doublefloatlongunsignedintchar,short高低/*------------------------------------------------

程序L2_4.C功能:自動類型轉換示例。

------------------------------------------------*/#include<stdio.h>main(){floatx,y;longm,n;x=3/2+8/3;y=3.0/2+8/3.0;m=1*2*3*4*5*6*7*8*9;n=1L*2*3*4*5*6*7*8*9;printf("x=%f,y=%f,m=%ld,n=%ld\n",x,y,m,n);}結果:X=3.000000,y=4.166667,m=-30336,n=362880強制類型轉換在C語言中也可以使用強制類型轉換符,強迫表達式的值轉換為某一特定類型。強制類型轉換形式為:

(類型)表達式

強制類型轉換最主要的的用途一是滿足一些運算對類型的特殊要求,例如求余運算符“%”,要求運算符兩側的數據為整型,(int)2.5%3二是防止丟失整數除法中的小數部分。2.7計算機中數據的表示計算機最主要的功能是處理數據,如數值、文字、圖形、圖像等。而這些數據必須被轉換為相應的數字編碼,才能進行存儲和處理。二進制、八進制、十六進制進制之間的轉換二進制數在內存中的表示字符編碼IEEE浮點數表示法目前已知的所有的C/C++編譯器都是按照IEEE(國際電子電器工程師協會)制定的IEEE浮點數表示法來進行計算的。這種結構是一種科學表示法,用符號(正或負)、指數和尾數來表示,底數被確定為2,也就是說把一個浮點數表示為尾數乘以2的指數次方再加上符號。IEEE浮點數表示法float共計42位,折合4字節由最高到最低位分別為31、30、29、……、0位31位是符號位,1表示該數為負,0反之。30-23位,一共8位是指數位。22-0位,一共23位是尾數位。123456.0f直接將整數部轉化為二進制表示:11110001001000000然后將小數點向左移,一直移到離最高位只有1位,就是最高位的1:1.11100010010000000一共移動了16位小數點每向左移一位就等于在以2為底的科學計算法表示中指數+1,所以原數就等于:1.11100010010000000*(2^16)123456.0f指數部分,一共8位,統一把十進制的整數化為二進制時,都先加上127,在這里,我們的16加上127后就變成了143,二進制表示為:1000111112345.6f這個數是正的,所以符號位是0我們按照前面講得格式把它拼起來:01000111111100010010000000000000/*--------------------------------------------------------------------

程序L2_5.C:十進制、八進制、十六進制數據及其輸出

------------------------------------------------------------------------*/

#include<stdio.h>main(){inta,b,c,m,n;a=11;b=011;c=0x11;m=65;n=97;printf("十進制11等于%d,八進制11等于%d,十六進制11等于%d,\n",a,b,c);printf("十進制八進制十六進制字符\n");printf("65%o%x%c,\n",m,m,m);printf("97%o%x%c,\n",n,n,n);}/*-----------------------------------------------------------------------------

程序L2_6.C:從鍵盤輸入一個大寫字母,輸出其對應的小寫字母。

-------------------------------------------------------------------------------*/#include<stdio.h>main(){charc;printf("請輸入大寫字母\n");scanf("%c",&c);c=c+32;/*大寫字母的ASCII碼加上32為其對應的小寫字母*/printf("其小寫字母為%c\n",c);}/*-----------------------------------------------------------------

程序L2_7.C:已知x=3.2,y=7,z=2,計算y/3*3.2-2的值。

-----------------------------------------------------------------*/#include<stdio.h>main(){floatx=3.2,s;inty=7,z=2;charc;s=y/3*3.2-2;printf("resultis%f\n",s);}/*--------------------------------------------------------------------------

程序L2_8.C:編寫一個程序,用于輸入一個學生的姓名、學號、英語、數學、計算機成績,輸出學生姓名、學號和平均成績。

------------------------------------------------------------------------------*/

#include<stdio.h>main(){charname[31];/*

溫馨提示

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

評論

0/150

提交評論