首页 > 代码库 > C语言学习入门 (一) 编译、链接、关键字、数据类型、printf函数

C语言学习入门 (一) 编译、链接、关键字、数据类型、printf函数

参考:http://www.cnblogs.com/mjios/category/459066.html


编译文件:cc -c one.c two.c  生成.o目标文件

链接文件:cc one.o two.o     默认生成 a.out 执行文件

指定生成的可执行文件名   cc -o one one.o 


连续编译、链接:cc one.c      cc -o one one.c    中间生成的.o文件会被删除,最后生成执行文件

cc one.c two.c   源文件超过一个时,目标.o文件便不会被删除(one.c 和two.c 需要一个main入口)

以后可以只编译更改的源文件  cc one.o two.o three.c, 生成可执行文件

cc -c a.c -o a.o  编译生成a.o


C语言32个关键字:

auto 

short double int long char float unsigned signed 

static volatile const

return void 

struct enum  typedef union

if  else  do while  continue for

switch case break 

register extern

default goto sizeof








当数值比较小(在char的取值范围内),用char 比用int 更节省内存开销,因为它只占1个字节

char c = ‘A’;与 char c = 65; 是等效的。一个汉字占两个字符,用char是不行的,

需要用字符数组来存储(c语言中没有字符串类型)。


局部变量可以在声明时不初始化,后续直接使用,与java不同

这样做不太好,因为这可能是一个随机的垃圾值,而不是0。


可以在基本数据类型的前面加一些修饰符,也有人称之为限定符,一样的意思。

有以下4种类型修饰符:

  • short  短型
  • long  长型
  • signed  有符号型     包括 正负数和0   
  • unsigned  无符号型         正数和0 

short int    <==> short

long int 、long long int 、long long    <==> long

long double  <==> double

signed  [int | long | char] 

unsigned [int | long | char] 


// 可以连续使用2个long

long long ll = 10;


// 下面两种写法是等价的

signed int si1 = 3;

signed si2 = 3;


// 下面两种写法是等价的

unsigned int us1 = 4;

unsigned us2 = 4;


// 也可以同时使用2种修饰符

signed short int ss = 5;

unsigned long int ul = 5;


unsigned char c1 = 10;

signed char c2 = -10;


long double d1 = 12.0;


c 语言中的进制:

   二进制:int a = 0B(b)1100 ;   

  八进制: int b = 027; 

  十六进制:int c = 0X(x)AF3;

  十进制:不加前缀  int d = 27;


printf(“%d”, a);      printf(“a=%d, b=%x”, a, b);


%ld,long int

%lf,long double

%4d,表示的结果占4位及以上,原样输出;反之,在左边补空格,补满至4位 

%-4d,  表示的结果(算上符号-)占4位及以上,原样输出; 反之,在右边补空格,补满至4位 

%.2f  输出两位小数,默认是6位

  %p    输出内存的地址,,   如:printf(“变量a的地址是:%p”, &a)

%u  输出的数值相当于是unsigned所修饰的。如果数值本身为负数,而要用%u来输出,

     那么就需要转换:在不同的编译器,负数转成相应位数的二进制形式,

     再去掉高位的符号位被0


C语言学习入门 (一) 编译、链接、关键字、数据类型、printf函数