云计算百科
云计算领域专业知识百科平台

【00002】

二、C语言

2.1基本数据类型

1.C语言开发步骤

(1) vi编辑器

1.使用vi打开软件

    vi filename.c

vi编辑器三种模式:
底行模式(默认,其余模式可以ESC进入底行模式)
插入模式(底行模式输入i、a、o均可进入插入模式)
命令模式(底行模式输入: 进入命令模式)

:wq 保存并且退出
:w 只保存不退出
:q 直接退出
:q! 不保存强制退出
:wq! 强制保存并且退出

2. 点击 i 键进入插入模式
3. 编写代码

    #include <stdio.h>
    int main(void)
    {
      printf("Hello World!\\n");
      return 0;

    }
4. 点击ESC
5. 输入:wq保存并且退出

(2)gcc编译器

1.编译C语言代码

    gcc filename.c
    gcc filename.c -o filename

注意:
如果不指定生成二进制的程序名,默认会生成a.out
如果编译报错需要重新打开代码修改语法问题
如果编译报警告,最好打开代码修改告警问题

2.gcc编译流程
预处理

处理和#号相关的代码
#include 头文件包含
将头文件中的内容展开
#define 宏定义
将宏定义完成替换
#if  #endif  #else  #elif  #ifndef  #ifdef 条件编译

    gcc -E filename.c -o filename.i

编译

将C语言代码编译成汇编代码

    gcc -S filename.c -o filename.s

汇编

将汇编代码编译成二进制代码

    gcc -c filename.c -o filename.o

链接

将多个二进制代码链接为一个可执行程序

    gcc filename.c -o filename

(3)运行代码

    ./二进制程序名

2.基础知识

(1)程序如何在计算机中运行

1. 编写C语言代码和编译好的二进制可执行程序都存放在外存中
2. 当执行代码时,会将外存中的二进制代码放入内存中执行与CPU交互实现对应功能
3. 当代码执行结束后,会将内存中二进制代码及其执行空间回收掉

(2)计算机中数据量的单位

1. 计算机中只有0、1二进制数据
2. 1bit(位)
3. 1byte(字节) == 8bit
4. 1kb == 1024 bytes
5. 1mb == 1024 kb
6. 1gb == 1024 mb
7. 1tb == 1024 gb

(3)进制转换

1. 二进制(0b):逢二进一 0 1
2. 八进制(0/0o):逢八进一 0 1 2 3 4 5 6 7
3. 十进制:逢十进一 0 1 2 3 4 5 6 7 8 9
4. 十六进制(0x):逢十六进一 0 1 2 3 4 5 6 7 8 9 a b c d e f
5. 二进制、八进制、十六进制转十进制
  对应位 * 对应位的权值再求和
6. 十进制转二进制、八进制、十六进制
  十进制数除以进制数得到的余数逆序排列
7. 二进制转换为八进制
  二进制三位对应八进制1位
8. 二进制转换为十六进制
  二进制四位对应十六进制1位

3.基本数据类型

数据类型:数据对象的特性
基本数据类型:C语言中已经定义好的数据类型
整数类型:123
浮点数类型:(小数类型/实数类型) 3.14
字符型:'A' '!'
逻辑类型:true false
缺省类型:void
构造数据类型:需要用户自己定义的数据类型

(1)整数类型

1.short(短整型)

占2个字节

singed short(默认):

signed short类型最左边的1bit表示符号位(0为正、1为负),其余位表示数据位(数据
位按照补码存放)

负数补码=原码->反码+1

signed short类型表示范围:-32768 — 32767

unsigned short:

unsigned short类型所有字节空间均存储数据位

unsiged short类型表示范围: 0 — 65535

2.int(整型)

占4个字节

singed int(默认):

signed int类型最左边的1bit表示符号位(0为正、1为负),其余位表示数据位(数据
位按照补码存放)

signed int类型表示范围:-21亿 — 21亿

unsigned int:

unsigned int类型所有字节空间均存储数据位

unsiged int类型表示范围: 0 — 42亿

3.long(长整型)

占8个字节

singed long(默认):

signed long类型最左边的1bit表示符号位(0为正、1为负),其余位表示数据位(数据
位按照补码存放)

signed long类型表示范围:-2^32 — 2^32 -1

unsigned long:

unsigned long类型所有字节空间均存储数据位

unsiged long类型表示范围: 0 — 2^64 -1

(2)浮点数类型

1.float(单精度浮点数类型)

占4个字节
所有的float类型均为有符号
1位符号位 + 8指数位 + 23尾数位
float类型 6-8位有效数字

2.double(双精度浮点数类型)

占8个字节

所有的double类型均为有符号
1位符号位 + 11指数位 + 52尾数位
double类型12-16位有效数字

(3)字符型

char:该类型主要用于表示存储字符类型

占1个字节

singed char(默认):

signed char类型最左边的1bit表示符号位(0为正、1为负),其余位表示数据位(数据
位按照补码存放)

signed char类型表示范围:-128 — 127

unsigned char:

unsigned char类型所有字节空间均存储数据位

unsiged char类型表示范围: 0 — 255
ASCII码表:规定字符和数字之间转换关系

                    表示所有能够在屏幕上显示或者键盘输入的字符

                    32号之前主要用于通信控制

(4)波尔(bool)类型/逻辑类型

bool类型的值域范围:true(1)、false(0)
C语言中非0值即为逻辑真值,0值为逻辑假值

(5)缺省(void)类型

主要用于搭配函数传参、指针来使用

4.常量和变量

(1)常量

1.整型常量

默认为signed int类型

    -123
    100
    123U
    123u
    123UL
    123ul
    123l
    123L
    0123
    0x1a
    0X1F

2.浮点型常量

默认为double类型

    5.12
    12.34
    3.14f
    5.34F
    12.56e5
    -13.98e-10
    99.34E8

3.字符常量

字符型常量必须加' ',只能写1个字符
    'a';
    'A';
    'Z';
    '!';
    '~';
    ''';
    '"';
    ' ';
    '0';
    '1';
    '9';
    '\\n';换行符,光标移到下一行开头
    '\\a';响铃警报,输出时终端蜂鸣
    '\\b';退格符,光标向左回退一格
    '\\r';回车符,光标回到本行最左侧
    '\\t';水平制表符,横向跳格(通常占 4/8 空格宽度)
    '\\v';垂直制表符,纵向换行跳行
    '\\\\';反斜杠本身,用来输出一个\\
    '\\0';空终止符,ASCII 0,C 语言字符串结束标记
    '\\065';
    '\\x41';

4.字符串常量

字符串最末尾会有一个用来标识结尾的\\0字符

“a”是由'a''\\0'组成,与'a'不等价

5.标识常量

#define 宏定义

增强代码的可读性,避免魔鬼数字

宏定义只是代码的替换,不会执行任何数据计算的操作
宏定义中能加括号就加括号

    #define M (50)

    #define N ((M)+(M))

(2)变量

在程序运行过程中,值可以发生改变的量

变量因为在内存中有存储空间,所以可以通过向存储空间赋值来修改变量的值
变量必须先定义再使用
开辟对应类型的变量空间,空间名称为变量名,通过变量名可以访问该空间,存取
变量中的数据时必须按照变量类型完成对数据的操作

1.变量的定义

    数据类型 变量名;

数据类型:基本数据类型
                  构造数据类型

变量名:只能由字母、数字、下划线构成,不能以数字开头
              不能与C语言关键字重名
              最好不要与C语言库函数重名
              变量名最好做到见名知意(驼峰法、Linux内核 GNU)

整形变量定义:

    short var;
    unsigned short var;
    int var;
    unsigned int var;
    long var;
    unsigned long var;

浮点型变量定义

    float var;
    double var;

字符型变量定义

    char var;

    unsigned var;

泊尔类型变量定义

    #include <stdbool.h>
    bool var;

2.变量的初始化

初始化:定义变量时为变量赋初值,称为初始化
赋值:变量定义完毕后,通过“=”对变量空间赋值,将“=”右边的值拷贝到“=”左边的
空间
注意:如果变量不初始化,变量为随机值,所以变量一定要初始化,不要使用未经
初始化的变量

(3)表达式

概念:由运算符连接的常量或变量组成的式子
特点:表达式一定有类型
           表达式一定有值

1.混合数据数据类型运算

如果运算符左右两端类型不一致,需要转换为同一类型进行运算

转换规则

低精度类型转换为高精度类型

浮点数类型精度 > 整数类型精度,同一类型所占空间越大精度越高
无符号类型精度 > 有符号类型精度
char、short在数据运算时会强制换转为int进行数据运算和数据处理
float在数据运算时会强制换换位double进行数据运算和数据处理

类型转换

1. 强制类型转换(显示类型转换)
   (类型)表达式/变量
2. 隐式类型转换
主要发生在混合数据类型运算和处理时,低精度转换为高精度

(4)运算符

1.算数运算符

+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)、+(自增)、–(自减)
%:唯一不能对浮点数操作的算数运算符
++/–:只能对变量操作

2.赋值运算符

=、+=、-=、*=、/=、%=

左值:变量可以作为左值
           常量/表达式不能作为左值

右值:变量/常量/表达式都可以作为右值

混合类型赋值处理方式:

1. 整形赋值给浮点数类型,扩展精度
2. 浮点数类型赋值给整形,舍弃小数点后的精度数据
3. 如果有符号和无符号整形互相赋值,会直接完成内存空间的拷贝
4. 小数据放入大空间,有符号数扩符号位,无符号数扩0
5. 大数据放入小空间,直接截取数据低位

3. 逗号运算符

从左到右依次执行逗号表达式,并将最后一个逗号表达式的结果作为整体的结果

4. sizeof运算符

sizeof可以获得数据类型或者变量所占内存空间大小(单位:字节)

5. 运算符优先级

括号 > 单目 > 双目(算数 > 移位 > 关系 > 位 > 逻辑) > 三目 > 赋值 > 逗号

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【00002】
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!