1、C語言中的數據類型:
2、學習數據類型的三個要素:
1、存儲數據的寬度
2、存儲數據的格式
3、作用範圍(作用域)
3、整數類型:char short int long
char 8BIT 1字節
short 16BIT 2字節
int 32BIT 4字節
long 32BIT 4字節
#include "stdafx.h"
void Plus(){
char A =0xFF
short B = 0xFF
int C = 0xFF
//在一個大括號裏變量不能重複
}
int main(int argc, char* argv[])
{
Plus()
return 0
}
void Plus(){
00401020 push ebp
00401021 mov ebp,esp
00401023 sub esp,4Ch
00401026 push ebx
00401027 push esi
00401028 push edi
00401029 lea edi,[ebp-4Ch]
0040102C mov ecx,13h
00401031 mov eax,0CCCCCCCCh
00401036 rep stos dword ptr [edi]
7: char A =0xFF
00401038 mov byte ptr [ebp-4],0FFh//局部變量
8: short B = 0xFF
0040103C mov word ptr [ebp-8],offset Plus+20h (00401040)
9: int C = 0xFF
00401042 mov dword ptr [ebp-0Ch],0FFh
10: //在一個大括號裏變量不能重複
11: }
00401049 pop edi
0040104A pop esi
0040104B pop ebx
0040104C mov esp,ebp
0040104E pop ebp
0040104F ret
有符號和無符號:在內存中存儲是完全一樣的,在使用的時候,要告訴計算機是當什麼用。類型轉換--比較大小和數學運算
#include "stdafx.h"
void Plus(){
char i =0xff
unsigned char a=0xff //無符號和無符號 存的是一樣
}
int main(int argc, char* argv[])
{
Plus()
return 0
}
4、浮點類型:float double
7: float i =12.5
00401038 mov dword ptr [ebp-4],41480000h
float和double在存儲方式上都是遵從IEEE的規範的
將一個float型轉化爲內存存儲格式的步驟爲:
1、先將這個實數的絕對值化爲二進制格式
2、將這個二進制格式實數的小數點左移或右移n位,直到小數點移動到第一個有效數字的右邊。
3、從小數點右邊第一位開始數出二十三位數字放入第22到第0位。
4、如果實數是正的,則在第31位放入“0”,否則放入“1”。
5、如果n 是左移得到的,說明指數是正的,第30位放入“1”。如果n是右移得到的或n=0,則第30位放入“0”。
6、如果n是左移得到的,則將n減去1後化爲二進制,並在左邊加“0”補足七位,放入第29到第23位。
如果n是右移得到的或n=0,則將n化爲二進制後在左邊加“0”補足七位,再各位求反,再放入第29到第23位。
7: float i =0.25F
00401038 mov dword ptr [ebp-4],3E800000h
-2-1=-3 ,FF -1 FE -2FD -3
FD = 1111 1101
0011 1110 1000 0000 0000 0000 0000 0000
3E8000
5、英文字元存儲
ASCII:
1、ASCII 碼使用指定的 7 位或 8 位二進制數組合來表示 128 或 256 種可能的字元。
2、標準 ASCII 碼使用 7 位二進制數來表示所有的大寫和小寫字母,數字 0 到 9、標點符號,以及在美式英語中使用的特殊控制字元。
3、擴展 ASCII 碼允許將每個字元的第 8 位用於確定附加的 128 個特殊符號字元、外來語字母和圖形符號。
標準ASCLL碼錶截取:
二進制 十進制 十六進制 字元
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
6、中文字元存儲
計算機發明之處及後面很長一段時間,只用應用於美國及西方一些發達國家,ASCII能夠很好滿足用戶的需求。
但是當天朝也有了計算機之後,爲了顯示中文,必須設計一套編碼規則用於將漢字轉換爲計算機可以接受的數字系統的數。
天朝專家把那些127號之後的奇異符號們(即EASCII)取消掉,規定:一個小於127的字元的意義與原來相同
但兩個大於127的字元連在一起時,就表示一個漢字,前面的一個字節(他稱之爲高字節)從0xA1用到 0xF7,後面一個字節
(低字節)從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了。
在這些編碼裏,還把數學符號、羅馬希臘的 字母、日文的假名們都編進去了,連在ASCII裏本來就有的數字、標點、字母都
統統重新編了兩個字節長的編碼,這就是常說的"全形"字元,而原來在127號以下的那些就叫"半角"字元了。