Day 2 C基础

今日思维导图

 

一,第一个c语言程序

【1】格式

#include <stdio.h>
int main()
{
printf("hello,world!");
return 0;
}

 

 

二,gcc编译

c语言是编译型语言,需要编译才能执行.

【1】一步编译

gcc 文件名.c 默认生成一个名为a.out 的可执行文件

gcc hello.c -o hello

 

【2】分步编译ESc->iso

预处理---编译---汇编---链接

每一步都可以用.c 文件直接执行

i)预处理E  i

删除注释,展开头文件,替换宏定义,不会检查语法错误,生成编译文件

gcc -E hello.c -o hello.i

ii)编译S     s

会检查语法错误,生成一个汇编文件

gcc -S hello.i -o hello.s

 

iii)汇编c

生成一个二进制文件

gcc -c hello.s -o hello.o

iv)链接

链接到程序需要的静态库/动态库,生成一个可执行文件,ELF文件类型

gcc hello.o -o hello

(gcc hello.c -o hello可以任意跳,这就算一步编译)

 gcc -E hello.c -o hello.i

 vim hello.i

 gcc -S hello.i -o hello.s

 vim hello.s

 gcc -c hello.s -o hello.o

 vim  hello.o

 gcc hello.o -o hello

 vim hello

 三,计算机中的数据存储

   数值型,非数值型

【1】计算机中的存储单位

1bit 是最小的存储单位

1 Byte =8 bit 是内存分配的最小单位

1 Kb=1024 Byte

1Mb =1024 Kb

1Gb=1024Mb

1Tb=1024 Gb

【2】进制转换

二进制,十进制,八进制,十六进制,六十进制

计算机中数据的处理都是以二进制的形式进行处理的

0010 0001

基数281016
数码0  10-70-90-9 A-F
位权2^0  2^18^0  8^110^1  10^016^0  16^1
标识符0b00x

i)十进制转二进制

十进制转任意进制,都可以用辗转相除法

ii)二进制转16进制

二进制转16进制,每四位二进制数转一位十六进制数,四位二进制数依次是8421

1111 0110

F6

iii)二进制转八进制

三位二进制数转一位八进制数

一位八进制数转三位二进制数

111   111

7        7

四,基本数据类型

c语言中的数据类型分为:基本数据类型  构造数据类型 void类型

【1】整形

整形数据默认是int 类型

数据类型大小占位符
int4 byte%d
short int2 Byte%d
 long int4/8 byte%ld
long long int8 byte%ld

【2】浮点型

浮点型数据默认是double类型

浮点型数据在计算机存储的是一个近似值

浮点型数据遵循IEEE754标准.

float最多可以表示小数点后6位

double最多可以表示小数点后15位

数据类型大小占位符
float4byte%f
double8 byte%lf

【3】字符型

非数值型数据

在计算机中以ASCII进行存储

数据类型大小占位符
char1 byte

%c 输出字符

%d 输出字符的ASCII 码

sizeof()运算符:求数据的大小

 运行结果:

 

需要记住的ASCII码

'\n':10

‘a':97

'A':65

' ':32

' 0':48

五,常量

在程序运行过程中,不能修改的量.

【1】整形常量

1,2,3,4 .....  %d

【2】浮点型常量

1.0 2,0 7.8

【3】字符型常量

'a', 'b' ....   被单引号包起来的单个字符

【4】字符串常量

''hello"被双引号包起来的一个或多个字符  %s字符串常量占位符

c语言中字符串结束标志,字符串的结尾有一个'\0'

【5】宏定义常量

1.无参宏定义

#define 宏名 宏体

在程序中所有遇到宏名的位置都被替换成宏体

#define N 10

在程序中所有遇到N的位置都被替换

2.带参宏定义

#define 带参宏名 宏体

#define ADD(a,b) a+b

宏定义就是简单定义宏名的过程

 =10+2*10+10+2/4=40

#include <stdio.h>
#define S hello    //hello不能作为字符串输出,因为没有""
#define STR "hello"  //hello可以作为字符串输出,因为有""
#define STR1(n) #n  //#把带参宏的参数转成字符串
int main(int argc, const char *argv[])
{
	printf("%s\n",STR);
	printf("%s\n",STR1(h));
	return 0;
}

 六,标准的输入输出函数

 【1】输出函数printf

    printf使用时,需要一个格式符和一个格式符对应类型的数据

    printf("占位符/格式符",输出表象);  //有一个格式符就要有一个输出表象

    printf("%d\n",10) //10就是输出表象 %d 就是10对应的格式符

    转义字符:有特殊意义的字符

    \n : 换行

    \t :制表符  一个tab键的大小 ----4个空格

    \b :退格

    \r :回车:回退到行首进行输出

    \\:输出一个反斜杠

格式符

%d : 整形数据的格式符

%-nd 以n个数据宽度左对齐输出,不够就补空格

%nd :以n个数据宽度右对齐输出 不够就补空格

%ld:长整形数据的格式符

%f:单精度浮点型的格式符,printf默认输出小数点后6位

%mf:指定小数点后的输出位数

%lf:双精度浮点型的格式符

%c:字符型的格式符

%s:字符串的格式符

%#x:输出十六进制,并且带前导符0x,小写x,输出十六进制时对应的字母都是小写的

%#X:输出十六进制,并且带前导符0X,大写X,输出十六进制时对应的字母都是大写的

%%:输出一个百分号

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值