C入门指导
(1) 环境安装 & 运行第一个C
重点 自己百度安装、自己百度跑第一个程序
- g++
- vs code
- 插件 C/C++
- 插件 code runner
(2) 程序组成
程序的组成是学习很多语言都必须了解的,了解之后会让你快速的建立一个整体的概念。在写C程序的时候,我们也会遵循这个组成规则
- 预处理器指令
- 变量
- 表达式
表达式包含:运算符 / 循环判断 / 数据结构 等… - 函数
函数也是一个指令集,下面会从 结构、定义、使用三个方面说明 - 注释
不会被编译的文本。
通常格式是 ://
或/**/
/*
* 这是一段注释
*/
#include <stdio.h> // 预处理指令
int main() // 函数
{
// 下面三行通称表达式
int a = 0; // 变量
printf("a is %d \n", a);
return 0;
}
(3) 数据类型 & 变量
C的数据类型被分为四类,分别是 基本数据类型、浮点类型、void类型、派生类型。
那什么是数据类型嘞?为什么要数据格式嘞?
那这个问题太深奥了,我觉得可以从好多个点去结合回答这个问题,可以从计算机最小组成单位 位
以及 字节
反码
补码
原码
cpu底层加减乘除的实现逻辑
等方面去回答,其实最终目的就是为了方便对数据进行管理、访问、维护、 运算。这里暂时不展开,后面有时间再说吧。
单位说明 : 1byte = 8位
基本数据类型 和 浮点数据 忘记可以查表不用死记,一般用int
1. 基本数据类型
类型 | 存储大小 | 范围 |
---|---|---|
char | 1byte | 0 - 255 或 -128 - 127 |
unsigned char | 1byte | 0-255 |
signed char | 1byte | -128 - 127 |
int | 2byte 或 4byte | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2byte 或 4byte | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2byte | |
unsigned short | 2byte | |
long | 4byte | |
unsigned long | 4byte |
2. 浮点类型
类型 | 存储大小 | 范围 | 精度 |
---|---|---|---|
flaot | 4byte | 1.2E-38 到 3.4E+381.2E-38 到 3.4E+38 | 6位小数点 |
double | 8byte | 2.3E-308 到 1.7E+308 | 15位小数点 |
flaot double | 10byte | 2.3E-308 到 1.7E+308 | 19位小数点 |
3. void类型
4. 派生类型
指针类型、数组类型、结构类型、共用体类型和函数类型。后面都会介绍定义和使用。
(4) 运算符 & 变量
1. 变量
变量就是数据的别名,比如:y = 8,其中y就称为便变量。
- 声明
变量的定义语法:type variable_list;
type 就是数据类型了,上面有表格,variable_list称为变量名。 - 变量名格式
- 除了
关键字
数字
特殊字符
之外,都能作为变量的第一个字符。 - 第二个字符开始
特殊字符
除外 - 关键字就是程序已经定义好的命名,比如:int float double
- 特殊字符就是 %$# 等等。。
- 除了
反正,用字母作为变量名就啥事都没有了
#include <stdio.h>
void main()
{
int i, j, k;
char c;
float salary;
double d;
}
2. 算术运算符
算术运算符就是加减乘除求余,配合
名称 | 符号 |
---|---|
加法 | + |
减法 | - |
加法 | * |
除法 | / |
求余 | % |
自增 | ++ |
自减 | – |
#include <stdio.h>
void main()
{
int a = 0, b = 10, c = 2;
printf("减法: %d\n", c - b);
printf("加法: %d\n", c + a);
printf("除法: %d\n", c / b);
printf("乘法: %d\n", c * b);
printf("求余: %d\n", b % c);
// 注意:(++b / b++) (--b / b--) 结果相同,但是细节有区别,自己去研究一下
printf("自增: %d\n", ++b);
printf("自减: %d\n", --b);
}
3. 关系运算符
六种关系运算符,分别是 等于、不等于、小于或等于、大于或等于、大于、小于,==
!=
<=
>=
>
<
。
下面做个例子,不理解的同学认真看。
一句话非零即真
,真就会进入if的语句中执行。
#include <stdio.h>
void main()
{
// 运算符结果输出
int a = 0, b = 1;
printf("== 输出结果:%d\n", a == b);
printf("!= 输出结果:%d\n", a != b);
// 配合判断if
if ( a == b )
{
printf("a 等于 b\n");
}
// 在 if 使用0,1作为条件
if ( 1 )
{
printf("条件1 进入了if语句中\n");
}
if ( 0 )
{
printf("条件0 进入了if语句中\n");
} else
{
printf("条件0 没进入if语句中");
}
}
4. 逻辑运算符
三种逻辑运算符,与或非 &&
||
!
&& : 只有全部都是 真时,返回真。 这里的真对应 大于零
||:有一个真,返回真。
!:!真 = 假,!假 = 真。这里的假是0。
例子好好看,好好思考。
#include <stdio.h>
void main()
{
// 与
printf("(0 && 0 && 1) = %d\n", 0 && 0 && 1);
printf("(1 && 1 && 1) = %d\n", 1 && 1 && 1);
printf("----------------------------------\n");
// 或
printf("(0 || 0 || 1) = %d\n", 0 || 0 || 1);
printf("(0 || 0 || 0) = %d\n", 0 || 0 || 0);
printf("(1 || 1 || 1) = %d\n", 1 || 1 || 1);
printf("----------------------------------\n");
// 非
printf("!0 = %d \n", !0);
printf("!1 = %d\n", !1);
}
5. 位运算
位运算比较高级,了解即可。与、或、异或、取反、左移、右移动,对应符号 &
|
~
^
<<
>>
- 简单例子
#include <stdio.h>
int main()
{
unsigned int a = 60; /* 60 = 0011 1100 */
unsigned int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
printf("Line 1 - c 的值是 %d\n", c );
c = a | b; /* 61 = 0011 1101 */
printf("Line 2 - c 的值是 %d\n", c );
c = a ^ b; /* 49 = 0011 0001 */
printf("Line 3 - c 的值是 %d\n", c );
c = ~a; /*-61 = 1100 0011 */
printf("Line 4 - c 的值是 %d\n", c );
c = a << 2; /* 240 = 1111 0000 */
printf("Line 5 - c 的值是 %d\n", c );
c = a >> 2; /* 15 = 0000 1111 */
printf("Line 6 - c 的值是 %d\n", c );
}
- 实现加法
#include <stdio.h>
void main()
{
int a = 121, b = 100;
while (b)
{
int c = a ^ b;
int d = (a & b) << 1;
a = c;
b = d;
}
printf("nums is %d", a);
}
6. C特有的运算符
下面的后面继续完善,最近课多事多。