vi编辑器
使用 touch test1.c
或者直接使用 vi test1.c
创建 test1.c文件
文件相关操作:
cat test1.c在终端查看文件的内容
head test1.c在终端查看文件内容,默认查看前十行
head -n test1.c 在终端查看文件内容的前n行
tail test1.c在终端查看文件内容,默认查看后十行
tail -n test1.c 在终端查看文件内容的后n行
#include <stdio.h> 函数库
// #开头 预处理
// .h文件 头文件
// < .h> 系统配置文件 /usr/include
// " .h" 用户新建的头文件(一般在当前文件夹里)
int main(int argc, const char *argv[])
//main主函数,程序的入口;一个工程中主函数有且仅有一个
// 扩展:命令行参数 argc 命令行输入字符串的个数
// argv 存储命令行输入的字符串
{
printf("hello world\n");
return 0;
// 主函数中的return,是主函数的结束标志 0整数 int
// 函数的返回值要和函数的数据类型保持一致;不要返回值,函数数据类型可以定义成void
printf("hello world\n");
printf("hello world\n");
}
vscode编辑器
终端调起方法:
code 文件/文件夹名字
gcc编译器
使用方法:
gcc test.c 编译文件,生成a.out
运行可执行文件 ./a.out
或者 gcc test.c -o 想要取的名字
./名字
完整编译 (分4步)
例题:
1,使用gcc 程序编译生成可执行文件的步骤分为:预处理, 编译,汇编和链接
2,GCC编译器中 -S 选项完成的工作是汇编。
1. 预处理
展开头文件,替换宏定义,删除注释
gcc -E test.c -o test.i
2. 编译
检查语法问题,有错报错,没有则继续运行生成汇编文件
gcc -S test.i -o test.s
3. 汇编
生成一个不可执行的二进制文件
gcc -c test.s -o test.o
4. 链接
链接库函数,最终生成二进制可执行文件
gcc test.o -o test(可执行文件名)
运行:./test
进制转换
计算机数据表示形式
1. 数值型数据
二进制 0 ,1
八进制 0-7 8:010
十进制 0-9
十六进制 0-F 16:0x10
A到F分别表示10到15
十进制转二进制适用短除法
但是正常人选择使用计算器
二转八
一位八进制用三位二进制转换
11 010 110--->0326
八转二
0777--->111 111 111
二转十六
一位十六进制用四位二进制转
1101 0110---》0xd6
十六进制转二进制
0xab--->10101011
非数值型数据
非数值型数据实际应用,操作的ASCII码值
可在终端输入
man ascii
查看ascii码表的信息(按q退出)
常用的ASCII码
'\0' 0 字符串结束标志
'\n' 10 换行
SPACE 32 空格
'0' 48
'A' 65
'a' 97
一些测试程序
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("%d\n", '2' - '0');
printf("%d\n", 'A');
printf("%d\n", 'a');
printf("%c\n", 'a' - 32);
printf("%c\n", '\101');
printf("%d\n", argc);
float a = (float)5 / 2;
printf("%.1f\n", a);
float b = 5 / 2;
printf("%f\n", b);
}
运行结果:
词法符号
运算符 关键字 标识符 分隔符 标点符号
关键字
存储类型: auto static extern register
数据类型: int char float short long double signed unsigned
构造数据类型: struct enum union
分支: if else switch case default for do while go to break continue
其他: void const sizeof volatile return typedef
标识符
在给变量、数组、函数等命名时, 遵循标识符的命名规则:
1)由字母、数字、下划线(_)组成
2)开头不能是数字
3)不能和关键字重名
4)见名知意
驼峰法命名
helloWorld:小驼峰命名(除第一个单词外,其他单词开头大写)
HelloWorld:大驼峰命名(每个单词开头大写)
运算符
算术运算符 逻辑运算符 位运算符 关系运算符 三目运算符 赋值运算符
算术运算符
+ - * / % ++ --
int a=5/2;
printf("%d\n",a); //2
========================
float a=5/2;
printf("%f\n",a);//2.000000 默认打印小数点后六位
float b=2;
printf("%f\n",b);//2.000000
==========================
float a=5.0/2;
printf("%f\n",a); //2.500000
==========================
强制转换
float a=(float)5/2; //强制转换只在当前这一行生效
printf("%.1f\n",a); //2.500000 %.1f保留一位小数
float b=5/2;
printf("%f\n",b); //2.000000
例题:1234 使用/ %分别表示出 1 2 3 4
一:
int a=1234;
printf("%d\n",a/1000);
printf("%d\n",a/100%10);
printf("%d\n",a/10%10);
printf("%d\n",a%10);
二:
#include <stdio.h>
int main()
{
//正输出
int a = 716463964;
int b = 10;
while (a > b * 10)
{
b *= 10;
}
for (; b > 10; b /= 10)
{
printf("%d\n", (a / b) % 10);
}
printf("%d\n", a % 10);
return 0;
}
运行结果:
++,--等的用法
独立成句
int a=6;
1)++a;
printf("%d\n",a); //7
2) a++;
printf("%d\n",a); //7
赋值运算
int a=6;
1)int b=++a; //+ =
printf("%d %d\n",a,b);//7 7
2)int b=a++; //= +
printf("%d %d\n",a,b);//7 6
打印语句
int a=6;
1)printf("%d\n",++a);//7
printf("%d\n",a);//7
2)printf("%d\n",a++);//6
printf("%d\n",a);//7
课后练习:
- 解析代码:分析每一步变量的取值
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10;
int b = a--; //b=10 ,a=9
int c = a + b + 2; //c=21
int d = (b--) + (++c); //d=10+22=32
printf("%d\n",d);
}
2.以下程序运行后输出的结果是——
#include <stdio.h>
int main()
{
int k = 011;
printf("%d\n", k++);
return 0;
}
011为8进制数,结果为9
3.在C语言中,要求运算符必须是整型的运算符是(D)
A./
B. ++
C.!=
D. %