C语言学习笔记第二天

C语言学习笔记第二天

  • 编译器

    ​ 负责把人能看懂的记录着代码的文件,翻译成计算机能看懂的二进制文件,由预处理器,编译器,链接器组成

        gcc 是由GNU社区为了编译Linux内核代码内核二开发的一款免费的编译器
    

    ​ gcc编译代码格式:gcc 编译参数 filename

    ​ gcc常用的编译参数(放在gcc后面使用):

    -E只显示预处理的结果到终端
    -std=gnu99设置为c99的语法标准
    -c只编译不链接
    -o指定编译结果的名字
    -s只生成汇编代码
    -I指定头文件的加载路径
    -Wall尽可能多的生成警告
    -Werror把警告当成错误处理 通常和-Wall联合使用
    -l指定要加载的代码库 如:-lm 加载数学库

    注:

    • -o有两种写法:1、-oname 2、-o name

    • 最上面那个I是大写的i,下面那个l是小写的L

  • C代码编程可执行文件的详细过程

    • 预处理 把源文件翻译成预处理文件

      gcc -E hello.c 显示预处理结果到终端

      gcc -E hello.c -o hello.i 生成以.i文件结尾的预处理文件

    • 编译 把预处理文件翻译成汇编文件

      ​ gcc -S hello.i生成以.s结尾的二进制的目标文件

    • 汇编 把汇编文件翻译成二进制的目标文件

      ​ gcc -c hello.s 生成以.o结尾的目标文件

    • 链接 把若干个目标文件合并成一个可执行文件

      ​ gcc hello.o默认生成a.out可执行文件

  • C语言的文件类型

    .c源文件
    .h头文件
    .h.gch头文件的编译结果文件,它会被优先使用
    .i预处理文件
    .s汇编文件
    .o目标文件
    .a静态库文件
    .so共享库文件
  • 存储空间的单位

    • Bit 比特 一个二进制位,只能存储0或者1,计算机中存储数据的最小单位

    • Byte 字节 八个二进制位,计算机存储器的存储容量的最小单位

    • KB MB GB TB PB 换算为1024:1

  • 数据类型

    为什么要对数据进行分类?

    ​ 1、现实生活中的数据本身就自带类别属性

    ​ 2、对数据进行分类可以节约存储空间、提高程序的运行速度

      C语言中数据类型分类为两大类:自建(程序员自己设计的类型:结构、联合、类)和内建(C语言自带的类型)
    

    ​ 注意sizeof可以计算类型、变量的字节数

    整形:signed有符号整数 (signed 可以缺省)

类型字节数大小范围
signed char1-128~127
signed short2-32768~32767
signed int4正负20亿
signed long4/8取决于操作系统的位数
signed long long8正负9开头的19位整数

​ unsigned 无符号整数

类型字节数大小范围
unsigned char10-255
unsigned short20-65535
unsigned int40-40亿
unsigned long4/8取决于操作系统的位数
unsigned long long80-1开头的20位整数

由于定义无符号整形时比较麻烦, c标准库把这些类型重定义成为一些新的简单的类型名:

需要导入头文件<stdint.h>

uint8_t uint16_t uint32_t uint64_t

int8_t int16_t int32_t int64_t

浮点型:

​ float 4 单精度浮点型

​ double 8 双精度浮点型

​ long double 12/16

​ 注意:小数点后六位有效

​ 判断浮点数是否为零

double num;

if(num<0.000001 && num>-0.000001)

	num=0;

采用一定的算法对真实的浮点型数据到二进制数据进行转化,这个过程比储存、读取数据要慢得多,编程时尽量使用整形数据

模拟型:

​ 字符型:char

​ 字符就是符号或者图案,在内存中储存的依然是整数,需要显示出字符时会根据出字符时,会根 据ASCALL表中对应的关系显示出对应的字符或图案

​ ‘\0’ 0 特殊字符

​ ‘0’ 48

​ ‘A’ 65

​ ‘a’ 97

​ 布尔型:bool

​ 先有的c语言后有的bool类型,所以C语言中不可能有真正的布尔类型,在头文件stdbool.h中

  • 变量与常量

    什么是变量:程序运行期间数值可以发生变化的叫做变量,相当于一个储存数据的盒子

    定义: 类型名 变量名;

    int num

    取名规则:

      	- 1、由字母、数字、下划线组成
      	- 2、不能以数字开头
      	- 3、不能与C语言的32个关键字重名
      	- 4、见名知意(功能、类型、作用范围……)
    
  • 变量的输入与输出

    类型占位符:表示传递变量的类型

    signed charsigned shortsigned intsigned longsigned long long
    %hhd%hd%d%ld%lld
    unsigned charunsigned shortunsigned intunsigned longunsigned long long
    %hhu%hu%u%lu%llu
    floatdoublelong doublechar
    %f%lf%llf%c

    练习1:定义各种类型的变量并初始化,使用printf显示他们各自的值


int scanf(const char *format,...);

功能:输入数据

format:”双引号包含的占位符“

… :变量地址列表

返回值:成功输入的变量的个数

注意:scanf需要提供变量的地址

&变量名 ==变量地址

练习2:第一各种类型的变量并初始化为0,使用scanf输入,使用printf显示


什么是常量:程序运行期间数值不能改变的叫做常量

数据类型
100llong类型(注意100后面是小写的L
100默认int类型
100lllong long类型
100uunsigned int
100luunsigned long
100lluunsigned long long
3.14默认double
3.14ffloat
3.14llong double
  • 格式化输入输出

格式作用
%nd显示n个字符宽度,不够则补充空格,右对齐
%-nd显示n个字符宽度,不够则补充空格,左对齐
%0nd显示n个字符宽度,不够则补充0,右对齐
%n.mf显示n个字符宽度(小数点也算一位),不够则补充空格,m表示小数点后几位,不够补零,四舍五入
%g不显示小数点后多余的零
  • 运算符


  • 自变运算符

    ++/-- 使变量的值自动加一或者减一

    前自变 立即生效

    后自变 下一句语句生效

    注意不要在一行代码中多次使用自变运算符

  • 算数运算符

    / * + -

    整数/整数 结果还是整数,没有小数点,只保留整数部分

    ​ 10/3 3

    ​ 10%3 1

    ​ 除数不能为0,否则报错,就算是编译的时候没有报错,运行的时候也会报错的

  • 关系运算符

    < > >= <= == !=

    结果为0或者1,结果可以继续参与后续运算

  • 逻辑运算符

    ​ && || !

    先把运算对象转换为逻辑值,0转换为假,非零转换为真

    运算功能
    A&&B一假即假
    A||B一真即真
    !A求反

    && 和||运算符有一个短路特性:当左边的只可以确定整个表达式的结果时,右边部分就不执行计算

  • 赋值运算符

    a = 10;

    a += 10;

    a *= 10;

    a /= 10;

    a %= 10;

  • 三目运算符

    A?B:C 判断A的值如果为真则执行B,否则执行C

  • 位运算符

    & ^ | << >>


  • 分支语句

    if(表达式1)

    {

    ​ //表达式1为真(非零)执行此处代码

    }else if(表达式2)

    {

    ​ //表达式2为真,执行此处代码

    }else

    {

    ​ //否则执行这个代码

    }

    作业:1、输入三个整数,从小到大显示

    2、输入一个年份,判断是否为闰年

    3、输入一个年份和月份,判断该月有多少天

    4、输入一个成绩,判断等级
    [90,100] A
    [80,89] B
    [70,79] C
    [60,69] D
    [0,59] E
    other 成绩有误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值