概述
打印
编程中的打印指的是输出
printf:格式化输出函数
转义符
所有的ASCII码都可以用“”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如 ,t,n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
变量
变量的意义就是确定目标并提供存放的空间
C语言的变量命名规则
大小写字母(a-z),数字(0-9) 下划线(_)
注意,大小写字母不一样…即a1和A1 是两个不同的标识符;
长度任意 但是最少一个字符
C语言中封装好/内置的变量
C99新增了5个关键字
1、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义
引入原因:C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作
2、restrict关键字只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。
3、_Bool关键字是用于表示布尔值。包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。
4、_Complexand_Imaginary关键字
C99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary.
头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,因此在编写新的应用程序时,应该使用头文件中的complex和imaginary宏。
C11新增7个关键字
_Alignas:内存对齐指示符
以前往往通过编译器的编译参数指定内存对齐方式。
_Alignof:对齐处理操作符
函数 aligned_alloc(),以及 头文件 <stdalign.h>。
对齐内存有利于提高程序运行效率,内存访问效率。
alignof(Foo) //值为4,对齐长度
sizeof(Foo) //结构体的总大小:12
_Atomic:原子操作
_Atomic int i; //原子类型的变量
atomic_store(&i,12); //stdatomic.h中的宏
_Generic:泛型
_Generic((var), type1:…, type2: …, ……, default:…)
#define GENERAL_ABS(x) _Generic((x),int:abs,float:fabsf,double:fabs)(x) 根据类型不同调用不同的函数,类似函数模板。
_Noreturn:指定该函数不返回到其调用点。
_Static_assert:静态断言
在编译时刻进行,断言表达式必须是在编译时期可以计算的表达式
_Thread_local:限定了变量不能在多线程之间共享
变量的命名区分大小写
变量的命名不能与C语言中的关键字重复
变量的命名中的第一个字母必须是字母或者下划线的开头
c语言的数据类型
常量
在程序的运行过程中,它的值不能被改变,这样的量我们称之为常量
整形常量,由整数组成的常量,对应python中的整形
实型常量,由浮点数组成的常量,对应python中的浮点型
字符常量,普通字符,如’G’,转义字符,如’n’,’t’,’b’
字符串常量,对应python中的字符串
符号常量,使用之前必须先定义,格式:#define 标识符 常量
比如 #define GW Greatwall→定义Greatwall为GW
预处理命令,有"#"开头的命令都被称之为预处理命令
取值范围
比特位:CPU能读懂的最小数据单位即bit又写为b
字节:内存机构的最小寻址单位即byte又写为B
约定俗成,规定一个B的大小为8个b的大小之和
即一个字节由八个比特位构成
进制
补码:
计算机是通过补码的方式来存放整数的值
整数的补码是该数的二进制形式
负数的补码需要通过以下几步获得:
1,取得该数绝对值的二进制形式
2,将第一步中的值按位取反
3,将取反后的值加一
数据类型对应的取值范围
字符和字符串
将输入的数值指定为%c时,它输入的字符会自动对应到ASCII字符表中的字符
故字符类型是一个特殊的整形
以下操作类似python中的列表
声明字符串
char name[5]
给字符串赋值
name[0] = 'F';
name[1] = 'I';
name[2] = 'J';
name[3] = 'F';
name[4] = 'K';
一般来说当字符过多的时候,要加一个"