c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理
數(shù)據(jù)類型
獲取int的字節(jié)數(shù)大小方法
printf("int bytes:%d",sizeof(int));
列表整理
Int 與 long int的區(qū)別
早期的C平臺(tái)是16位int系統(tǒng),int用二字節(jié)表示,范圍是-32768~+32767;long是long int的簡(jiǎn)寫,用4字節(jié)表示,范圍是-2147483648~+2147483647。顯然在早期平臺(tái)下long能表示的整數(shù)范圍要比int大得多。而時(shí)下的平臺(tái)流行的是32位int系統(tǒng),即4字節(jié)系統(tǒng),int與long在這樣的系統(tǒng)下已經(jīng)沒(méi)有區(qū)別了,它們都是4字節(jié)帶符號(hào)整數(shù),表數(shù)范圍都是-2147483648~+2147483647。
數(shù)據(jù)溢出
當(dāng)變量大于類型的最大值或者小于類型的最小值時(shí),該變量的值會(huì)進(jìn)行跳轉(zhuǎn),如最大值加一則是最小值。
#include
voidmain(){char min=-128-1;char max=127+1;
printf("min-1=%d",min); //輸出: 127
printf("max+1=%d",max); //輸出: -128
}
進(jìn)制
int i=99; /*十進(jìn)制*/
int i=07; /*八進(jìn)制*/
int i=0x04; /*十六進(jìn)制*/unsignedint i=60u; /*無(wú)符號(hào)整數(shù)*/
long int i=60l; /*長(zhǎng)整數(shù)*/unsignedlong int i=60ul; /*無(wú)符號(hào)長(zhǎng)整數(shù)*/
靜態(tài)變量與函數(shù)
只用于本文件(當(dāng)前點(diǎn)C文件)的變量或函數(shù)要全部使用static關(guān)鍵字聲明
靜態(tài)變量
0、靜態(tài)全局變量?jī)H對(duì)當(dāng)前文件可見(jiàn),其他文件不可訪問(wèn),其他文件可以定義與其同名的變量,兩者互不影響,不可用extern實(shí)現(xiàn)夸文件訪問(wèn)
1、靜態(tài)變量會(huì)自動(dòng)賦有初值0,而普通變量編譯器不會(huì)自動(dòng)賦初值
2、局部靜態(tài)變量放置在數(shù)據(jù)區(qū),所以不會(huì)因函數(shù)的消失而死亡,但寄生于函數(shù)之上。全局靜態(tài)變量與全局變量類似。
3、靜態(tài)變量重復(fù)定義時(shí),局部靜態(tài)變量?jī)?yōu)先級(jí)高,但只作用于局部
#include
static int i;//全局靜態(tài)變量
voidfun1(){static int i;//局部靜態(tài)變量
printf("%d",i);//0-9(局部)
i++;
}voidmain(){intx;for(x=0;x<10;x++) fun1();
printf("---%d",i);//0(全局)
}
靜態(tài)函數(shù)
0、在函數(shù)的返回類型前加上static,就是靜態(tài)函數(shù)
1、靜態(tài)函數(shù)只能在聲明它的文件中可見(jiàn),其他文件不能引用該函數(shù)
2、不同的文件可以使用相同名字的靜態(tài)函數(shù),互不影響
枚舉
enumEx{
D0,D1,D2,D3//0,1,2,3
};enumEx{
D0=100,D1,D2,D3 //100,101,102,103
}ee;enumEx{
D0,D1=200,D2,D3 //0,200,201,202
}ee;
printf("%d
",D2);
結(jié)構(gòu)體
聲明
方法1:
struct結(jié)構(gòu)體名
{
成員列表
};struct 結(jié)構(gòu)體名 變量1,變量2;
方法2
struct結(jié)構(gòu)體名
{
成員列表
}變量1,變量2;
方法3
struct{
成員列表
}變量1,變量2;
方法4
typedef struct{
成員列表;
}結(jié)構(gòu)體別名;
結(jié)構(gòu)體別名 變量1,變量2;
初始化
方法1
struct{
成員列表
}變量1={成員1值,成員2值,成員3值……};
方法2
memset(&結(jié)構(gòu)體變量名,0,sizeof(結(jié)構(gòu)體變量名)); //將所有全部變量清零
引用(使用)成員:
結(jié)構(gòu)體變量
struct結(jié)構(gòu)體名 變量1,變量2;
變量1.成員名
結(jié)構(gòu)體指針變量
struct 結(jié)構(gòu)體名 *變量1;
變量1->成員名
C文件間共享變量
extern
extern是計(jì)算機(jī)語(yǔ)言中的一個(gè)關(guān)鍵字,可置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中。提示編譯器遇到此變量或函數(shù)時(shí),在其它模塊中尋找其定義,另外,extern也可用來(lái)進(jìn)行鏈接指定。
可以經(jīng)extern寫在頭文件中,變量的定義寫在任意一個(gè)點(diǎn)C文件(如main.c)中,此后只要包含該頭文件夾即可實(shí)現(xiàn)變量的共享使用
舉個(gè)栗子:
C1.h,聲明函數(shù)c1fun()
#ifndef _C1_H_
#define _C1_H_
void c1fun(char *strx);
#endif
C1.c,實(shí)現(xiàn)函數(shù)c1fun()
#include#include"c1.h"
char *wu;
void c1fun(char *strx){
wu=strx;
}
Main.c,調(diào)用函數(shù)c1fun(),并讀取外部變量wu的值
#include #include "c1.h"
extern char *wu;
voidmain(){
c1fun("123456");
printf("===:%s",wu);//輸出:123456
}
#define
針對(duì)不改變的量,可以在頭文件中聲明,在其他c文件中包含即可使用
如c1.h中:
#define DONG "dongxiaodong"
Mian.c中:
#include"c1.h"……
printf("===:%s",DONG);
……
宏定義的使用
#define的使用
宏定義常量
#define DONG '2' //字符
#define DONG "is str" //字符串
#define DONG 12 //數(shù)字
#define DONG 13.36 //浮點(diǎn)數(shù)
宏定義范圍
#define P 123 ……#undef P
typedef的使用
宏定義之類型重命名
typedef unsigned char u8;
宏定義之類型重命名對(duì)比
#include
#define ch1 char*typedefchar*ch2;voidmain(){
ch1 a,b;//char *a,b;
ch2 c,d;//char *c,*d;//輸出: --8,1,8,8--
printf("--%d,%d,%d,%d--",sizeof(a),sizeof(b),sizeof(c),sizeof(d));
}
帶參數(shù)的宏定義
#include
#define Max(x,y) ((x>y)?x:y)
#define Add(x,y) (x+y);
voidmain(){int i=Max(10,2);int ii=Add(2,1) //此處無(wú)分號(hào)printf("max:%d,add:%d",i,ii);//max:10,add:3
}
參考:
https://blog.csdn.net/kuniqiw/article/details/84495732
總結(jié)
以上是生活随笔為你收集整理的c语言不同类型变量用什么表示什么作用,C语言数据类型及变量整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ora 00900 已编译但有错误_技术
- 下一篇: python md5解密_python