c 语言中unsigned char类型变量占用内存大小,C数据类型
C的32個關鍵字數據類型關鍵字(12)char,short,int,long,
float,double,unsigned,signed,
struct,union,enum,void
控制語句關鍵字(12)if,else,switch,case,
default,for,do,while,
break,continue,goto,return
存儲類關鍵字(5)auto,extern,register,static,const
其他關鍵字(3)sizeof,typedf,volatile
常量(在進程運行過程中,其值不能被改變的量)1
2
3
4
5
6
7
8
9int (void)
{
const short a=10;
printf("hello world,%dn",a);
return 0;
}#define 宏名 宏值(沒有;即結束標記)(推薦使用宏定義方式定義常量)
匿名常量 “hello”、’A’、9、1.23
const 類型 變量名=變量值。
標識符命名規則(變量和常量的統稱)標識符不能是關鍵字。如 system、main、printf
只能由數字、字母、下劃線組成 0-9/a-z/A-Z/_
不能以數字開頭
大小寫嚴格區分
變量(在使用前必須先定義,定義前必須有相應的數據類型)變量三要素:變量類型、變量名、變量值
可以通過其名字和地址訪問相應的內存
變量聲明和變量定義的區別:變量定義:給變量在內存中開辟存儲空間
變量聲明:不會給變量開辟存儲空間。向系統注冊該變量。
注意:編譯器在編譯至變量賦值處,發現該變量尚未被定義,會自動尋找變量聲明,將該聲明提升成定義(隱式聲明),如果聲名前有 extern 關鍵字,則提升失敗。
eg:1
2
3
4
5
6
7
8
9#include
int (void)
{
extern int a;
a=10; /*err,沒有空間,不可賦值*/
int b=10; /*定義一個變量值b,b的類型為int,值為10*/
return 0;
}
進制轉換(8421碼)
二進制(2^0~2^10)
計算機內部只采用二進制形式進行數據存儲。
十進制轉換二進制:除基逆取余(除二逆取余)
二進制轉換十進制:按權展開再相加
8進制和16進制:以符號位為0表示八進制 最大數值為7 0~7 %o格式符打印
以符號位為0x表示16進制 最大數值為F 0~9 ABCDEF %x、%X格式符打印(大小寫)8進制轉2進制: 04735—–421碼 —–100 111 011 101
2進制轉8進制: 010 100 101 110 101 001 —–024565116轉2:0xFAC12 —-8421碼 —-1111 1010 1100 0001 0010
2轉16:0001 0100 1011 1010 1001 ———0x14BA91
2
3
4
5
6
7
8
9
10
11#include
int main(void)
{
int t = 123; /*十進制方式賦值*/
int a = 076; /*定義一個8進制數*/
int b = 0x7a; /*定義一個16進制數*/
printf("十進制:%dn",t);
printf("八進制:%on",a);
printf("十六進制:%xn",b);
return 0;
}
編碼(原反補碼)在計算機系統中,數值一律用補碼來存儲,主要原因是:統一了零的編碼
將符號位和其他位統一處理
將減法運算轉變為加法運算
兩個用補碼表示的數相加是,如果最高位(符號位)有進位,則進位被舍棄char ch=10;10+(-10)78+(-34)10 原碼: 0000 101078 補碼: 0100 1110
-10原碼: 1000 1010-34原碼: 1010 0010
10 反碼: 0000 1010-34反碼: 1101 1101
-10反碼: 1111 0110-34補碼: 1101 1110
10 補碼: 0000 1010
-10補碼: 1111 0110
10 + (-10)78+(-34)
0000 1010 + 1111 0110 = 0000 00000100 1110 + 1101 1110=0010 1100
整型:int數據類型名稱打印格式含義大小示數范圍int整型變量%d十進制整型4字節-2^31~+2^31-1(-2147483648~+2147483647)
short:短整型變量%hd十進制短整型2字節-2^15~+2^15-1
long長整形%ld十進制長整型4字節不同平臺不同系統中大小不同 4/8
long long長長整型%lld十進制長長整型8字節
無符號整型數據類型打印格式含義大小示數范圍unsigend int%u十進制無符號整型4字節0~2^32-1 (0~4294967295)
unsigend short%hu十進制無符號短整型2字節0~2^16-1
unsigend long%lu十進制無符號長整型4字節不同平臺不同系統中大小不同
unsigend long long%llu十進制無符號長長整型8字節
整型變量的定義和輸出打印格式含義%d輸出一個有符號的10進制int類型
%o(字母o)輸出8進制int類型
%x輸出16進制int類型,字母以小寫輸出
%X輸出16進制int類型,字母以大寫輸出
%u輸出一個10進制無符號數
sizeof 關鍵字sizeof(變量名) ————返回該變量的大小,單位:整數字節
sizeof(類型名) ————返回該數據類型的大小,單位:整數字節sizeof在系統內定義為:typedef unsigned int size_t 所以用%u匹配打印
sizeof是C語言的內置運算符
sizeof不是函數,它的功能是計算一個數據類型的大小,單位是字節
sizeof的返回值為 size_t
size_t類型在32位操作系統下是unsigned int(無符號整數)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include
int main(void)
{
int a = 10;
short b = 20;
long c = 30;
long long d = 40;
printf("a=%dn",a); /* %d匹配int型數據 */
printf("b=%hdn",b); /* %h匹配short型數據 */
printf("c=%ldn",c); /* %ld匹配long型數據 */
printf("d=%lldn",d); /* %lld匹配long long型數據 */
size_t abc=10; /* size_t類型在32位操作系統下是unsigned int(無符號整數)*/
printf("abc=%un",abc); /* 此處及以下均以無符號整型%u輸出*/
printf("int 型數據類型占用內存的大小 = %u字節n",sizeof(int));
printf("short 型數據類型占用內存的大小 = %u字節n",sizeof(short));
printf("long 型數據類型占用內存的大小 = %u字節n",sizeof(long));
printf("long long 型數據類型占用內存的大小 = %u字節n",sizeof(long long));
return 0;
}
字符型:char(本質就是一個字節大小的整型)一個字節(8 bit)%c 打印 有符號示數范圍:-128~127(-2^7~+2^7-1) 無符號示數范圍:0~255(0~2^8-1)
‘0’ : ASCII 值—–48
‘a’ : ASCII 值—–97
‘A’ : ASCII 值—–65
‘ ’: ASCII 值—–0 #define NULL ((void *)0)泛型指針
‘n’: ASCII 值—–10
‘t’: 按8字符做對齊輸出。不足8字符用空格補齊
注意:用單引號引起來的’a’表示字符常量a,雙引號引起來的”a”表示字符串常量。不允許
‘abc’ 這種寫法
有符號數和無符號輸的區別:有符號數最高為符號位,0表示正數,1表示負數
轉義序列(用于打印無法打印的ASCII字符)轉義序列含義ASCII碼值(十進制)a警報007
b退格008
f換頁012
n換行010
r回車013
t水平制表符009
v垂直制表符011
反斜杠()092
’單引號039
”雙引號034
?問號063
總結
以上是生活随笔為你收集整理的c 语言中unsigned char类型变量占用内存大小,C数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言能否写windows应用程序,C语
- 下一篇: C语言程序设计0004,C语言程序设计0