IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 初涉C语言 -> 正文阅读

[C++知识库]初涉C语言

 

C语言简介:

C语言诞生于1970~1973年,丹尼斯.里奇和肯.汤普逊编写完成的,归属于美国的贝尔实验室

C语言专门为了编写操作系统而诞生的,因此天生适合对硬件编程,也非常适合数据结构和算法的实现,以速度快而著称

由于C语言出现时间早,有很多缺陷,也没想到普通人也能用C语言,因此虽然存在陷阱,但是一些前辈帮你总结好了经验<C语言的陷阱与缺陷>

虽然C语言自由度很高,但是也意味着危险,自由源于自律

C89 语法标准,gcc默认的语法标准

C99 是对C语言的扩展和增强 gcc code.c -std=gnu99

C11 全新升级

C语言的第一个程序

#include <stdio.h>

程序员所写的代码并不是标准C代码,需要一段程序把它翻译成标准C代码,负责翻译程序叫做预处理器,翻译的过程叫做预处理,被翻译的语句叫做预处理指令,以#开头的都是预处理指令

#include 把头文件导入到当前文件

#include <> 从系统指定目录下查找头文件并导入

#include "" 先从当前目录下查找,如果找不到再从系统指定目录下查找并导入

stdio.h 负责对输入输出的函数进行说明

.c 源文件 记录的都是功能性代码

.h 头文件 绝大多数记录的是函数的说明

stdlib.h string.h

int main()

{

printf("Hello World!\n");

return 0;

}

main函数:

函数是C语言管理代码的基本单位,一个函数就是一个功能的实现,就是一个代码段

main函数是程序的入口,也是唯一出口,有且只有一个

int 是一种数据类型,表示函数的返回值类型,是一个整数

return 作用:

1、返回一个返回值给调用者

2、结束函数的执行

main函数的调用者是操作系统,它的返回值返回给操作系统,反映了程序的是怎么样结束的:

正数 出现异常

0 正常结束

负数 出现错误

printf/scanf 属于C标准库中的函数,输入、输出数据

转义字符:

键盘上一些没有的符号,通过一些特殊的字符来表示

\n 换行符

\b 退一个字符

\r 回到行首

\a 铃响

\t 制表符

%% 一个%

\\ 一个\

C语言以分号作为一行代码的结束,使用大括号来划分代码

gcc编译器:

负责把人能看懂的代码的文本文件翻译成计算机能看懂的二进制文件。

由预处理器、编译器、链接器组成

gcc是由GNU组织为了编译Linux内核而开发的一款免费的编译器

常用参数:

-std=gnu99 设置编译语法标准 -std=c99

-E 对文件只进行预处理操作,并显示结果

-c 只编译不链接

-o 指定输出的结果名

-S 对文件进行汇编操作

-I 指定头文件的查找路径

-l 使用指定的代码库 -lm math.h

-Wall 尽可能多地产生警告

-Werror 把警告当做错误处理

C语言代码变成可执行程序的过程:

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

gcc -E code.c 把源文件预处理后的结果显示屏幕上

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

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

gcc -S code.i ->code.s 生成以.s结尾的汇编文件

汇编: 把汇编文件翻译成目标文件 (二进制)

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

链接: 把若干个目标文件合并成一个可执行文件 a.out

gcc a.o b.o c.o... ->a.out 生成a.out可执行文件

C文件类型:

.c 源文件

.h 头文件

.h.gch 头文件的编译结果

.i 预处理文件

.s 汇编文件

.o 目标文件

.a 静态库文件

.so 共享库文件

存储空间的单位:

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

Byte 字节 八个二进制位,计算机存储数据的基本单位

Kb 1Kb=1024Byte

Mb 1Mb=1024Kb

Gb =1024Mb

Tb =1024Gb

Pb =1024Tb

数据类型

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

1、在自然界中数据本来就是分类的

2、对数据进行分类可以节约空间,提高运行效率

C语言中把数据分为自建(程序员自己设计的类型,例如结构、联合、类)、内建(C语言自带的)

整型:

signed 有符号

signed char 1 -128~127

signed short 2 -32768~32767

signed int 4 正负20亿

signed long 4/8 正负20亿/以9开头正负19位数

signed long long 8 以9开头19位数

注意:signed 不加代表了加

unsigned 无符号

unsigned char 1 0~255

unsigned short 2 0~65535

unsigned int 4 0~40亿

unsigned long 4/8

unsigned long long 8 0~以1开头的20位整数

注意:

由于定义无符号的数据比较麻烦,标准库中有头文件<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

小数点后6位有效

模拟型

char 字符型:%c %hhd

所谓的字符就是符号或图案,在内存中是以整数形式存储的,需要显示字符时,会根据ASCII码表中的对应关系来显示出对应的符号或图案

0 '\0' 特殊字符

48 '0'

65 'A'

97 'a'

bool 布尔型:

先有的C语言才发明的bool类型,所以C语言没有真正的布尔类型,必须加上头文件<stdbool.h>才能使用

bool true 1 false 0

sizeof(unsigned int) 计算类型、变量所占的字节数

变量和常量:

什么是变量:

相当于存储数据的盒子,在程序运行期间数值可以发生改变

定义:

类型 变量名;

int num;

变量名的取名规则:

1、由字母、数字、下划线组成

2、不能以数字开头

3、不能与32个关键字重名 printf scanf sizeof bool

4、见名知意(功能、类型、范围)

注意:变量的值是随机的,为了安全起见,一般初始化为0

int num = 0;

使用:

赋值: num = 10;

参与运算 num*10

变量的输入输出:

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

功能:输出数据

format:"双引号包含的提示信息+占位符"

...: 变量列表

返回值: 输出字符的个数

练习1:定义各种类型的变量并初始化,通过printf显示各个类型变量的值

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

功能:输入数据

format:"双引号包含的占位符"

...: 变量地址列表 变量的地址 = &变量名

返回值:成功输入的数据的个数

练习2:通过scanf接受各种类型数据的值,并printf显示

类型占位符:

%hhd %hd %d %ld %lld

%hhu %hu %u %lu %llu

%f %lf %LF

%c

什么是常量:

程序运行期间数值不能发生改变的叫常量

100 默认int

100l long

100ll long long

100u unsigned int

100lu unsigned long

100llu

3.14 默认double

3.14f float

格式化的输出:

%nd 显示n个字符宽度,不足则补空格,右对齐

%-nd 显示n个字符宽度,不足则补空格,左对齐

%0nd 显示n个字符宽度,不足则补0,右对齐

%n.mf 显示n个字符宽度,不足补空格,m表示小数点后的位数

%g 不显示小数点后多余的0

运算符:

自变运算符 ++/-- 使变量的值自动加1或减1

前自变:立即有效

后自变:下一句语句才有效

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

算术运算符: + - * / %

整除/整数 结果不能有小数点 10/3 3

/ % 除数不能为0,否则产生 浮点数例外,核心已转储的报错信息

一旦除零,程序直接死掉

关系运算符: > < >= <= == !=

运行后,得到的是比较的结果 1或者0,比较的结果是可以继续参与运算

int n=-100;

10<n<100; C语言中永远为真,规则跟数学中的不一样

if(100 == n)

{

}

逻辑运算符: && || !

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

A && B 一假即假

A || B 一真即真

!A 求反

&& || 具有短路特性 当左边值可以确定整个表达式的结果时,右边的不再进行运算

三目运算符:运算对象有三个部分

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

该语句不能使用流程控制语句,因为它必须要有运算的结果

赋值运算符 = += -= *= /= ...

a += b; a = a + b;

a -= b; a = a - b;

位运算符:& | ~ ^ << >>

类型转换

自动类型转换:

只有相同的类型的数据才能进行运算,不同类型的数据需要转换成相同类型才能运算

转换规则:以不丢失数据为基础,适当地牺牲一些空间

1、字节少向字节多的转

2、有符号向无符号转

3、整型向浮点型转

强制类型转换:

(新类型)数据 有丢失数据的风险,谨慎使用

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:16:52  更:2021-07-13 17:19:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 1:03:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码