1.工具安装
使用的工具为eclipse + 编译工具MinGW64
1.1 Eclipse的安装
参考网址为:https://baijiahao.baidu.com/s?id=1620193436856012646&wfr=spider&for=pc
1.下载Eclipse
下载地址为:https://www.eclipse.org/downloads/ 2.下载完成 后,选择安装。先需要先安装JDK1.8
配置和下载的方法如下:https://www.runoob.com/java/java-environment-setup.html
4.安装完成后将JDK的安装路径添加到环境变量中,检查添加到环境变量的命令为:
测试JDK是否安装成功
1、"开始"->"运行",键入"cmd";
2、键入命令: java -version、java、javac 几个命令,出现以下信息,说明环境变量配置成功;
1.2编译工具安装
下载Mingw-w64的地址为:
http://mingw-w64.org/doku.php/download
https://www.cnblogs.com/lidabo/p/8990348.html
https://jingyan.baidu.com/article/19192ad816ea01e53e570730.html
当安装成功后,将相关的bin文件添加到环境变量,添加后最后重启可以生效。重启后,通过cmd命令进行验证,输入gcc -v表示安装成功
2.GCC编译C/C++的四个过程
预处理 gcc -E main.c -o main.i 编译阶段 gcc -S main.i -o main.s 汇编阶段 gcc -c main.s -o main.o 链接阶段 gcc main.o -o main.exe
3.C基础
3.1数据的原码 反码 补码表示
为了表示负数,将最高位解释为符号位
正数的原码、反码、补码均相同
对于负数,已知原码求反码,符号位不变,其它位按位求反
对于负数,已知原码求补码,先求反码,再在反码末位加1
原码的表示法:符号为:0表示正数 1表示为负数,其余7位是绝对值
一个字节用原码表示是,数的表示范围为-127 到127
反码表示法:
正数和零的反码就是自己
负数的反码:符号位为1,其余位为其绝对值得各位取反
一个字节用反码表示时,数的表示范围为-127到127
补码的表示法:
负数的补码为:先求反码,再在反码末位加1
一个字节用补码表示时,数的表示范围为-128 到127
补码的优点为:
在计算机里面,数值一律要用补码来表示(存储),一个字节可以用8位来表示,这样做的原因为:
1.加减法统一处理为加法,如2-1的操作为:
0000 0010
+1111 1111
0000 0001
2.符号与数值统一处理:如 -127-1的操作为:
1000 0001
1111 1111
1000 0000
常用的二进制的原码反码补码为:
十进制 | 原码 | 反码 | 补码 |
---|---|---|---|
10 | 0000 1010 | 00001010 | 00001010 |
-10 | 1000 1010 | 11110101 | 1111 0110 |
127 | 0111 1111 | 0111 1111 | 0111 1111 |
-127 | 1111 1111 | 1000 0000 | 1000 0001 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 |
-128 | 无法表示 | 无法表示 | 1000 0000 |
3.2 关键字
关键字 | 描述 |
---|---|
auto | 声明自动变量 |
sizeof | 计算数据类型长度 |
typedef | 用以给数据类型取别名 |
register | 声明寄存器变量 |
const | 声明只读变量/常量 |
static | 声明静态变量或函数 |
struct | 声明结构体变量或者函数 |
volatile | 用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错 |
union | 声明共用数据类型 |
enum | 声明枚举类型 |
extern | 1.此变量或者函数在其他变量中声明2.当有c/c++混合编译时,如果C++调用的是c中定义的函数或者变量,要加extern 来告诉编译器以C方式来命令 |
goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 break跳出当前循环 |
default | 开关语句中的“其他分支” |
比较难理解的关键字:
C语言中volatile关键字的作用](https://www.cnblogs.com/hjh-666/p/11148119.html)
goto语句的使用:goto 标识;
当满足条件时,跳转到标识语句,
//不打印 10-20的中间数
int main() {
int a = 10;
LOOP:
do {
if(a == 15) {
a = a+1;
goto LOOP;
}
printf("a 的值为: %d\n",a);
a++;
} while (a<20);
return 0;
}
continue语句的使用
如果一个循环体中设置了continue语言,当执行了continue语句后,位于continue之后的语句将不会被执行
/*
* 输出10到20之间不能被7整除的数
*/
//define后面不需要;
#define N 7
int main() {
int n;
for(n=10;n<=20;++n) {
if(n % N ==0) continue;
printf("%3d\n",n);
}
return 0;
}
循环语句的使用while
/*
* 九九乘法表
*/
int main() {
int i,j;
printf("\n");
for(i=1;i<10;i++)
printf("%5d",i);
printf("\n____________________________________________\n");
i=1;
while(i<10) {
j =1;
while(j<10) {
//考虑最后一行换行
printf(j==9 ?"%5d\n": "%5d",i*j);
j++;
}
i++;
}
return 0;
}
或者修改为for循环
for(i=1;i<10;i++) {
for(j=1;j<10;j++)
printf(j==9 ?"%5d\n": "%5d",i*j);
}