C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
#include //头文件
int main()
{
printf("hello bit\n");
return 0; }
//main函数是程序的入口
//一个程序中main函数有且仅有一个
//printf函数是格式化输出函数,是C语言标准库函数,定义于头文件
(1)类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
.....
(2)计算每种类型的大小:用sizeof函数。sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位)
#include
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0; }
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。
不变的值,C语言中用常量的概念来表示;变得值C语言中用变量来表示。
(1)定义变量的方法
int age = 45;
float weight = 50.2f;
char ch = 'x';
(2).变量的分类
a.局部变量 b.全局变量
#include
int global = 2019;//全局变量
int main()
{
int local = 2020;//局部变量
int global = 2021;//局部变量
printf("global = %d\n", global);
return 0;
}//结果为global=2021
*当局部变量和全局变量同名的时候,局部变量优先。
(3)变量的使用
#include
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:");
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
//num1,num2,sum都是变量
//scanf是输入,printf是输出
(4)变量的作用域和生命周期
①作用域
通常来说,一段代码所用到的名字并不是一直有效,而限定这个名字可用性的代码的范围就是这个名字的作用域
a.局部变量的作用域是变量所在的局部范围
b.全局变量的作用域是整个工程
②生命周期
变量的生命周期是指变量的创建到变量的销毁之间的一个时间段
a.局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束
b.全局变量的生命周期是整个程序的生命周期
(5).常量
*字面常量
*const修饰的常变量
*# define定义的标识符常量
*枚举常量
#include
enum Sex
{
MALE,//0
FEMALE,//1
SECRET//2
};
//括号中的MALE、FEMALE、 SECRET都是枚举常量
//枚举常量默认值是从0开始,往下依次递增1
//注意,最后一个常量后面没有( ,)号
int main()
{
//字面常量演示
3.1415;//字面常量
1500;//字面常量
//const 修饰的常变量是不能直接修改的!
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!依然还是3.14f
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
const 修饰的常变量在C语言中只是在语法层面限制了变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量。
(1).字符串
由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。它的结束标志是\0
"hello world.\n"//就是一个字符串
\0在计算字符串长度(如strlen函数)的时候是结束标志,不做字符串的内容。
"hello.\n"//存放内容为{'h','e','l','l','o','\0'}所以长度为5
#include
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "bit";//完整的字符串系统会在末尾自己加上\0
char arr2[] = {'b', 'i', 't'};//没有\0
char arr3[] = {'b', 'i', 't', '\0'};//手动加上\0
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0; }
(2).转义字符串
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。如: \x30
例如
#include
int main()
{
printf("%c\n", '\'');//输出为‘ ’
printf("%s\n", "\"");//输出为“ ”
return 0;
}
(3)注释
代码中有不需要的代码可以直接删除,也可以注释掉。有些代码比较难懂,可以加一下注释文字
#include
int Add(int x, int y)
{
return x+y;
}
/*C语言风格注释,不能嵌套注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
//C++注释风格,可注释一行或多行
//int a = 10;
//调用Add函数,完成加法
printf("%d\n", Add(1, 2));
return 0; }
if(表达式) //如果满足表达式,就执行语句1
{
语句1;
}
else //否则执行语句2
{
语句2
}
(1)while循环
while(表达式)
{
语句1;
}
//当表达式成立时,一直执行语句1.
代码演示
#include
int main()
{
int i = 0;
while(i<5)
{
i++;
printf("hello\n");
}
return 0;
}
//运行结果为打印5行 hello 代码
(2)for循环
for(初始化变量;循环条件;变化变量)//中间用分号隔开
{
中间循环体;
}
//其中表达式皆可省略,但是分号不可以
代码演示
#include
int main()
{
int i=0;
for(i=0;i<5;i++)
{
printf("hello\n");
}
return 0;
}
//运行结果为打印5行 hello 代码
(3).do…while循环
do
{
循环体;
}while(循环条件);
//意思为:做...,直到(条件不满足结束)
代码演示
#include
int main()
{
int i=0;
do
{
printf("hello\n");
i++;
}while(i<5);
return 0;
}
//运行结果为打印5行 hello 代码