1. c語言中的資料型別
c語言中的型別按其組成可以分為簡單型別和構造型別,按是否預定義了型別名字和值集可以分為基本型別和非基本型別,按是否加了型別限定符可以分為限定型別和非限定型別。
ansi c99標準中型別定義的bnf語法如下圖。
說明:
1ansi c99標準中規定的資料型別如下圖所示。#define pointer int *;
2 pointer a,b;
說明:
3. c語言中資料型別的轉換
型別轉換分為顯示和隱式兩種,前者比較簡單,這裡只講後者。下面是c99標準中給出的各種型別物件的基本轉換規則:
整型別:short int/char/列舉型別/位域型別都可轉換成int,如果超出int表示範圍,則提公升到unsigned int。
對於二元運算子中的普通算術運算轉換,c99標準給出了如下圖所示的轉換規則:
說明:
4. 測試練習
1答案:char a = 0xb6;
2short b = 0xb600;
3int c = 0xb6000000;4 5
if ( a == 0xb6) puts("
a");
6if ( b == 0xb600) puts("
b");
7if ( c == 0xb6000000) puts("
c");
在vc或x86的gcc下,只會列印出 c ,而linux的gcc則會列印出a和c。
解釋:char在前兩者預設是signed char,而後者預設是unsigned char。因此當整型提公升時,在前兩者的編譯器下,三條語句分別變成如下情況:
1而在linux的gcc編譯下,則是下面的情況:if ( 0xffffffb6 == 0x000000b6) puts("
a");
2if ( 0xffffb600 == 0x0000b600) puts("
b");
3if ( 0xb6000000 == 0xb6000000) puts("
c");
1if ( 0x000000b6 == 0x000000b6) puts("
a");
2if ( 0xffffb600 == 0x0000b600) puts("
b");
3if ( 0xb6000000 == 0xb6000000) puts("
c");
C 資料型別及其轉換詳解
前言 在c 中,資料型別可以分為以下幾種型別 值型別 value types 引用型別 reference types 指標型別 pointer types 其中指標型別只在不安全 下使用,一般不涉及所以今天不討論。我們主要 引用型別和值型別。一 基本定義 值型別的變數在宣告後,系統直接在託管棧中為...
C 語言中的資料型別
1.1基本資料型別 字元型 char 短整型 short int 整型 int 長整型 long int 單精度浮點型 float 雙精度浮點型 double 1.2復合資料型別 陣列,結構體。字元型 char a 1 1個位元組 短整型 short int 2個位元組 整型 int 4個位元組 長...
C語言中的資料型別
常量,表示一些固定的資料 1 整型常量 int 包括了所有的整數,比如6 27 109 256 10 0 289等 2 浮點型常量 float double 浮點型常量分為double和float兩種資料型別 u double 雙精度浮點型,其實就是小數。比如5.43 2.3 0.0等 注意,0.0...