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