1. 程式人生 > >c語言==測量各種資料型別的長度以及typedf關鍵字對資料型別的作用

c語言==測量各種資料型別的長度以及typedf關鍵字對資料型別的作用

32位處理器儲存單位
bit (位)
位元組 = 8 bit
半字 = 2 個位元組 = 16 bit
字 = 4 個位元組 = 32 bit
位元組長度: 變數在記憶體中所佔的儲存空間的長度
資料型別 位元組長度
char 1
short 2
int 4
long 4
float 4
double 8
指標 4
指標型別為什麼是4個位元組?
因為所有的指標儲存的都是地址,在作業系統中,地址是固定長度的,由作業系統的位數決 定,比如32位的系統是4個位元組,64位的系統是8個位元組。

strlen 和 sizeof 的區別
sizeof是運算子而 strlen 是一個函式。
sizeof測量的是一個變數或則資料型別的位元組長度。
sizeof有兩種寫法:測量資料型別時必須給資料型別名加括號
sizeof(變數或資料型別名);
sizeof 變數
注意:測量陣列長度時,若陣列定義了大小,則該陣列佔的位元組數為定義的大小,若未定義大小,則陣列佔的位元組數為字串中的字元+1(注意在sizeof中‘\0’要算進去)
雖然都是統計字串的個數,但是sizeof 統計的字元中包括‘\0’,strlen 是不包括的
有符號和無符號的範圍計算
unsigned char
0000 0000 = 0 (最小)
1111 1111 = 255(最大)
簡單的計算方法 : 1111 1111 = 255
+0000 0001 = 1
—————– 10000 0000 256
signed char
0+ 1-
0 000 0000 = 0
0 111 1111 =127
1 000 0000 = -128
1 111 1111 = -1
計算機最後儲存的就是補碼
正數的原碼就是補碼
負數的補碼就是負數的絕對值原碼取反加1
知道負數的補碼怎麼求原值?
把補碼取反再加一。
計算機中不做減法,用加法代替。
‘a’ = 97
0 —> ‘\0’
計算的時候,是補碼之間的計算!!!!!
typedf關鍵字: 用typedf給變數重新命名 typedf char Char
好處 : 提高程式碼的移植性 對程式碼起保護作用。

相關推薦

c語言==測量各種資料型別長度以及typedf關鍵字資料型別作用

32位處理器儲存單位 bit (位) 位元組 = 8 bit 半字 = 2 個位元組 = 16 bit 字 = 4 個位元組 = 32 bit 位元組長度: 變數在記憶體中所佔的儲存空間的長度 資料型別 位元組長度 char 1 short 2 int 4

測量各種資料型別長度(包括指標),typedf關鍵字資料型別作用

        bit  (位)      位元組 =  8 bit         半字 = 2 個位元組 = 16 bit      字  =  4 個位元組  =  32 bit   位元組長度: 變數在記憶體中所佔的儲存空間的長度    資料型別      位元組長度                 

C語言各種資料型別長度

C語言的基本資料型別有以下幾個: int 整型 char 字元型 float 單精度浮點型 double 雙精度浮點型 另外,在基本資料型別基礎上附加一些限定詞, 得到擴充的資料型別。short,long可以應用到整型, unsigned可以應用到整型和字元型: short int(或short) 短整型 l

C語言各種資料型別的大小

C語言   1.幾條規則   (1)char型別一般是8bit,但ANSI C裡沒有硬性規定其長度,某些嵌入式編譯器可能是16bit   (2)short和long型別的長度不相同   (3)int型別通常同具體機器的物理字長相同   (4)short通常是16bits, 

C語言各種資料型別各佔多少位

(一)32位平臺:分為有符號型與無符號型。有符號型:short 在記憶體中佔兩個位元組,範圍為-2^15~(2^15-1)int 在記憶體中佔四個位元組,範圍為-2^31~(2^31-1)long在記憶體中佔四個位元組,範圍為-2^31~2^31-1無符號型:最高位不表示符號位unsigned short 在

C語言各種資料型別中所佔的位元組和取值範圍

問題:C語言資料型別取值範圍,是根據什麼定義這個範圍取值? 首先,在計算機中所有資料都是用一個一個的二進位制位(0或1)儲存的,單位稱為:位(bit);然後,每8位二進位制數(比如01010001)代表一個位元組(byte)大小,即1位元組=8位;再然後,C語言每個資料型別

ACMNO.44 C語言-平均分 有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)

題目描述 有N個學生,每個學生的資料包括學號、姓名、3門課的成績, 從鍵盤輸入N個學生的資料, 要求打印出3門課的總平均成績,以及最高分的學生的資料 (包括學號、姓名、3門課成績) 輸入 學生數量N佔一行每個學生的學號、姓名、三科成績佔一行,空格分開。 輸出 各門

C語言各種整型型別所佔位元組數

平臺: 64位編譯器+LINUX+Gcc #include<stdio.h> main() { char a; char* b; short int c; int d; unsigned int e

C語言的結構和聯合,以及PHP是怎麽實現弱類型的

main 中一 字符 變量類型 type 以及 logs void 例子   C語言的結構(struct):包含多個成員,可能有多種數據類型,並且需要分配幾種類型占用空間之和的空間。   聯合(union):支持多種類型,供使用者使用其中一種數據類型,當然是需要分配其中占用

C語言二叉樹的建立以及輸出二叉樹的深度

二叉樹的深度(10分) 題目內容: 給定一棵二叉樹,求該二叉樹的深度 二叉樹深度定義:從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的節點個數為樹的深度       輸入格式: 第一行是一個整數n,表示二叉樹的結

C++語言錯誤 C2679 二進位制“>>”: 沒有找到接受“overloaded-function”型別的右運算元的運算子(或沒有可接受的轉換)

C++語法錯誤 C2679 二進位制“>>”: 沒有找到接受“overloaded-function”型別的右運算元的運算子(或沒有可接受的轉換) 上網找了好久都沒有找到答案,所以 我想請教一下是怎麼回事,謝謝各位 visual studio2017 //標頭檔案 #inclu

c語言中獲取陣列的長度寫法

首先對於一維陣列,如: char a[]={1,2,3,4};int b[]={1,2,3,4,5};float c[]={1.0,2.0,3.0};如何求取這些陣列的長度呢?可以使用sizeof(),但由於sizeof()返回的是位元組長度,所以可以使用sizeof(x)/sizeof((x)[0])

C語言各種運算子

今天對C語言的操作符號有點忘了,進行位運算是必須要掌握的,這個兄弟總結的不錯,我就不再總結了,在此記錄。 需要指出的是:計算機常用演算法使用規則 Mod求模(即整數相除求餘數), And按位與, Or按位或, Xor按位異或, Lsh左移, Rsh右移 Not按位取反

C語言-二叉樹基本操作以及二叉搜尋樹基本操作

功能 二叉樹操作: 建立二叉樹 遍歷二叉樹(前序,中序,後續) 計算高度 計算結點數目 清空二叉樹 空樹判斷 二叉搜尋樹操作: 插入 最值(最大值,最小值) 刪除 程式碼 #include &l

C語言動態庫建立方法,以及和python混合程式設計

這篇小結是2016年暑假在新疆出差階段所寫,因為專案需要所以研究了一下。 如有錯誤,歡迎互相交流。 不同編譯器實現python呼叫C語言動態庫方法小結 Windows平臺下Visual Studio 2010編譯器建立動態庫,並呼叫 第一步:建立動態dll動態庫

C語言實現各種排序(1)

#include<stdio.h> //排序分為插入排序,希爾排序,氣泡排序,快速排序,選擇排序,堆排序,歸併排序,基數排序(桶排序) //1.1 //直接插入排序,較為簡單,思路為從第二個數開始逐個將其插入前面有序的序列中 //平均時間複雜度為O(N2),最快時間複雜度為O(N),最

c語言輸出各種三角形的程式碼

1. 演示圖 實現程式碼: #include <stdio.h> int main(){ for(int i=0;i<=5;i++){ for(int j=0;j<=i;j++){ printf("*"); } printf("\n"

分享幾本比較好的pdf書籍,包括oracle資料庫,mysql資料庫,C語言程式設計,java程式設計,以及linux作業系統等

1.個人認為最好的oracle資料庫學習書籍,找了很久,發現內容最全講解最清晰《Oracle PL/SQL程式設計》上下 連結:https://pan.baidu.com/s/1VxvbW070_-KEFKEwY0iFCg  提取碼:rm1e  2.《linux系統程式設計

C語言筆試題之——BOOL,int,float,指標型別的變數a 與“零”的比較

Bool型: if(a) if(!a) BOOL型,沒什麼好講的,無非就是true或false判斷 int型: if(0 == a) if(0 != a) float型: const float EPSILON=0.000001; if(abs(a)<=E

c++中的型別轉換以及explicit關鍵字

寫在前面 在沒有深入接觸c++之前,只是簡單的知道變數存在自動轉換和強制轉換,比如,int a = 3.3; 同樣也可以對類物件進行自動型別轉換以及強制型別轉換 型別轉換 使用《c++ primer plus》中的例子: /* Stonewt.h檔案 */ #ifndef STO