歡迎光臨!1kic網(wǎng)專注于為電子元器件行業(yè)提供免費及更實惠的芯片ic交易網(wǎng)站。
學(xué)C51的基礎(chǔ)2《數(shù)據(jù)類型 》 學(xué)C51的基礎(chǔ)2《數(shù)據(jù)類型 》 學(xué)C51的基礎(chǔ)2《數(shù)據(jù)類型 》 2. 數(shù)據(jù)類型 在Turbo C語言中, 每個變量在使用之前必須定義其數(shù)據(jù)類型。Turbo C有以下幾種類型: 整型(int)、浮點型(float)、字符型 (char)、指針型(*)、無值型(void)以及結(jié)構(gòu)(struct)和聯(lián)合(union)。其中前五種是Turbo C的基本數(shù)據(jù)類型、后兩種數(shù)據(jù)類型(結(jié) 構(gòu)和聯(lián)合)將在第五章介紹。 2.1 整型(int) 一、整型數(shù)說明 加上不同的修飾符, 整型數(shù)有以下幾種類型; signed short int 有符號短整型數(shù)說明。簡寫為short或int, 字長為2字節(jié)共16位二進制數(shù), 數(shù)的范圍是-32768 ~ 32767。 signed long int 有符號長整型數(shù)說明。簡寫為long, 字長為4字節(jié)共32位二進制數(shù), 數(shù)的范圍是-2147483648 ~ 2147483647。 unsigned short int 無符號短整型數(shù)說明。簡寫為unsigned int, 字長為2字節(jié)共16位二進制數(shù), 數(shù)的范圍是0 ~ 65535。 unsigned long int 無符號長整型數(shù)說明。簡寫為unsigned long,字長為4字節(jié)共32位二進制數(shù), 數(shù)的范圍是0 ~ 4294967295。 二、整型變量定義 可以用下列語句定義整型變量 int a, b; /*a、b被定義為有符號短整型變量*/ unsigned long c; /*c被定義為無符號長整型變量*/ 三、整型常數(shù)表示 按不同的進制區(qū)分, 整型常數(shù)有三種表示方法: 十進制數(shù): 以非0開始的數(shù) 如:220, -560, 45900 八進制數(shù): 以0開始的數(shù) 如:06; 0106, 05788 十六進制數(shù):以0X或0x開始的數(shù) 如:0X0D, 0XFF, 0x4e 另外, 可在整型常數(shù)后添加一個"L"或"l"字母表示該數(shù)為長整型數(shù), 如22L,0773L, 0Xae4l。 2.2 浮點型(float) 一、浮點數(shù)說明 Turbo C中有以下兩種類型的浮點數(shù): float 單浮點數(shù)。字長為4 個字節(jié)共32 位二進制數(shù),數(shù)的范圍是3.4x10-38E~3.4x10+38E。 double 雙浮點數(shù)。字長為 8個字節(jié)共 64 位二進制數(shù),數(shù)的范圍是1.7x10-308E~1.7x10+308E 說明: 浮點數(shù)均為有符號浮點數(shù), 沒有無符號浮點數(shù)。 二、浮點型變量定義 可以用下列語句定義浮點型變量: float a, f; /*a, f被定義為單浮點型變量*/ double b; /*b被定義為雙浮點型變量*/ 三、浮點常數(shù)表示 例如: +29.56, -56.33, -6.8e-18, 6.365 說明: 1. 浮點常數(shù)只有一種進制(十進制)。 2. 所有浮點常數(shù)都被默認為double。 3. 絕對值小于1的浮點數(shù), 其小數(shù)點前面的零可以省略。如:0.22可寫為.22,-0.0015E-3可寫為 -.0015E-3。 4. Turbo C默認格式輸出浮點數(shù)時, 最多只保留小數(shù)點后六位。 2.3 字符型(char) 加上不同的修飾符, 可以定義有符號和無符號兩種類型的字符型變量, 例如: char a: /*a被定義為有符號字符變量*/ unsigned char l; /*l被定義為無符號字符變量*/ 字符在計算機中以其ASCII碼方式表示, 其長度為1個字節(jié), 有符號字符型數(shù)取值范圍為-128~127, 無符號字符型數(shù)到值范圍是 0~255。因此在Turbo C語言中,字符型數(shù)據(jù)在操作時將按整型數(shù)處理, 如果某個變量定義成char, 則表明該變量是有符號的, 即它 將轉(zhuǎn)換成有符號的整型數(shù)。 Turbo C中規(guī)定對ASCII碼值大于0x80的字符將被認為是負數(shù)。例如ASCII 值為0x8c的字符, 定義成char時, 被轉(zhuǎn)換成十六進制 的整數(shù)0xff8c 。這是因當ASCII碼值大于0x80時, 該字節(jié)的最高位為1, 計算機會認為該數(shù)為負數(shù),對于0x8c表示的數(shù)實際上是-74 (8c的各位取反再加1), 而-74 轉(zhuǎn)換成兩字節(jié)整型數(shù)并在計算機中表示時就是0xff8c( 對0074 各位取反再加1)。因此只有定義為 unsigned char 0x8c 轉(zhuǎn)換成整型數(shù)時才是8c。這一點在處理大于0x80的ASCII碼字符時(例如漢字碼)要特別注意。一般漢字均定義 為unsigned char(在以后的程序中會經(jīng)常碰到)。 另外, 也可以定義一個字符型數(shù)組(關(guān)于數(shù)組后面再作詳細介紹), 此時該數(shù)組表示一個字符串。 例如: char str[10]; 計算機在編譯時, 將留出連續(xù)10個字符的空間, 即str[0]到str[9]共10個變量, 但只有前9個供用戶使用。第10個str[9]用來 存放字符串終止符NULL即"\0", 但終止符是編編譯程序自動加上的, 這一點應(yīng)特別注意。 二、字符常數(shù)表示 能用符號表示的字符可直接用單引號括起來表示, 如'a','9','Z',也可用該字符的ASCII碼值表示, 例如十進制數(shù)85表示大寫 字母'U', 十六進制數(shù)0x5d表示']', 八進制數(shù)0102表示大寫字母'B'。 一些不能用符號表示的控制符, 只能用ASCII碼值來表示, 如十進制數(shù)10 表示換行,十六進制數(shù)0x0d表示回車, 八進制數(shù)033表 示Esc。Turbo C2.0中也有另外一種表示表示方法, 如'\033'表示Esc,這里'\0'符號后面的數(shù)字表示十六進制的ASCII值當然這種表 示方法也適用于可睦接用符號表示的字符。 另外, Turbo C2.0中有些常用的字符用以下特殊規(guī)定來表示: 規(guī)定符 等價于 含義 '\f' '\X0C' 換頁 '\r' '\X0D' 回車 '\t' '\X09' 制表鍵 '\n' '\X0A' 換行 '\\' '\X5C' \符 '\'' '\X27' '符 '\"' '\X22' "符 對于字符串常量, 一般用雙引號括起來表示, 如"Hello Turbo C2.0"。 2.4 指針型(*) 指針是一種特殊的數(shù)據(jù)類型, 在其它語言中一般沒有。指針是指向變量的地址,實質(zhì)上指針就是存貯單元的地址。根據(jù)所指的 變量類型不同,可以是整型指針 (int *)、浮點型指針 (float *)、字符型指針 (char *)、結(jié)構(gòu)指針 (struct *) 和聯(lián)合指針 (union *)(結(jié)構(gòu)指針和聯(lián)合指針將在第4節(jié)中介紹)。 2.5 無值型(void) 無值型字節(jié)長度為0,主要有兩個用途:一是明確地表示一個函數(shù)不返回任何值; 一是產(chǎn)生一個同一類型指針(可根據(jù)需要動態(tài)分 配給其內(nèi)存)。 例如: void *buffer; /*buffer被定義為無值型指針*/