1, C语言是一种面向过程的语言
2, 所有C语言程序都需要包含main()函数, 代码从main函数开始执行
3, stdio.h是一个标准输入输出头文件, #include是一个预处理命令, 用来引入头文件。 printf()用于格式化输出, 在头文件stdio.h中有声明, 程序编译时如果找不到这个头文件就会报错。
4, reutrn 0表示退出程序
1 #include <stdio.h> 2 3 int main() { 4 printf("Hello, World!胡超\n"); 5 return 0; 6 }
5, C程序由各种令牌(token)组成, 令牌可以是关键字,标识符, 常量,字符串值,符号
6, 字长?
字长是CPU的主要技术指标之一, 指的是CPU一次最大能并行处理的二进制位数。
目前主流的计算机字长是32位和64位
7, 原码, 反码 和补码? (指的都是二进制)
正数的原码, 反码,补码相同, 假设字长为8, 则 10的 原码,反码,补码都为 0000 1010
为了表示负数, 我们将最高位表示为符号位 , 则 -10的原码为 1000 1010
符号位不变, 其他按位取反, 则得到反码: 1111 0101
反码末位加1,得到补码: 1111 0110
在计算机中, 数值一律用补码来存储, 这是因为, 使用补码,符号位和其他位统一处理, 减法也可以按照加法来运算。
如: 3 - 10 = -7, 这个计算 我们可以按照 3 + (-10)来处理:
3 的补码 0000 0011
-10的补码 1111 0110
相加得到: 1111 1001
验证下 -7 的原码为 1000 0111 反码为 1111 1000 补码为 1111 1001
8, C语言中的关键字
仅列出本人在java中不常用到的或不同的:
auto 声明自动变量 , 如 auto int i; 等价于 int i;
const 定义常量, 如果一个变量被const修饰, 那么它的值就不能被改变
extern 声明变量或函数是在其他文件 或在本文件的其他位置定义的
goto 无条件跳转语句 (不建议频繁使用,因为代码跳来跳去会让结构变得很乱)
register 声明寄存器变量
signed 声明有符号类型变量或函数
unsigned 声明无符号类型变量或函数
sizeof 计算数据类型或变量的长度(所占字节数)
如:
printf("%llu\n", sizeof (int)); //4
printf("%llu\n", sizeof (char)); //1
printf("%llu\n", sizeof (long)); //4
printf("%llu\n", sizeof (long long)); //8
printf("%llu\n", sizeof (double)); //8
printf("%llu\n", sizeof (float)); //4
printf("%llu\n", sizeof (void)); //1
printf("%llu\n", sizeof (_Bool)); //1
注意: 具体字节数可能根据操作系统位数不同而有所不同
void 除了声明函数无返回值, 无参数之外, 还可以用来声明无类型指针
struct 声明结构体类型
typedef 用来给数据类型起别名, dart中也有这个关键字, 用来定义一个类型
union 声明共用体类型
volatile 说明变量在程序执行中,可被隐含地改变 java中也有这个关键字, 用于声明可见性数据
9, C语言的数据类型
可以分为四种:
1) 基本类型: 算术类型,包括整数类型和浮点类型
2)枚举类型: 算术类型, 用来定义在程序中只能赋予其一定的离散整数值的变量
3)void类型, 表明没有可用的值
4)派生类型: 包括:指针类型、数组类型、结构类型、共用体类型和函数类型



10, 变量的类型决定了变量存储的 大小和位置, 如:

11, 变量的声明和定义:
1 extern int i; // 声明变量名, 并没有建立存储空间, 变量i可以在别的文件中定义 2 int a;//声明并定义变量, 建立存储空间
extern使用示例:
我们在一个源文件中定义方法, 要引用的变量加extern关键字修饰
1 extern int x; 2 extern int y; 3 int testAdd(){ 4 return x+y; 5 }
然后在另一个文件中, 提供这两个变量的定义:
1 #include <stdio.h> 2 3 int x = 31; 4 int y = 58; 5 int testAdd(); 6 int main() { 7 printf("%d\n", testAdd()); 8 return 0; 9 }
12, C中的左值和右值
左值(Lvalues):指向内存位置的表达式被称为左值表达式,左值可以出现在赋值号的左边或右边
右值(Rvalues): 指的是存储在内存空间中的某些地址上的数值,右值表达式不能被赋值, 只能出现在赋值号的右边
如 int a = 10; 变量是左值, 10 是右值。 我们不能写成 10 = a, 或者 10=20
13, C库函数printf()
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>);
被声明在stdio.h中
常见格式符:
- %d 十进制有符号整数
- %u 十进制无符号整数
- %f 浮点数
- %s 字符串
- %c 单个字符
- %p 指针的值
- %e 指数形式的浮点数
- %x, %X 无符号以十六进制表示的整数
- %o 无符号以八进制表示的整数
- %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
- %p 输出地址符
- %lu 32位无符号整数
- %llu 64位无符号整数
浙公网安备 33010602011771号