1.什么是c语言
c语言是一门计算机语言(人和计算机交流的语言),包括c/c++/java/python
(1)语言的发展:
二进制语言(1/0),操作对应二进制代码,写代码过于复杂
10100001 - ADD(助记符) - 汇编语言
汇编语言简化 →B语言 → C语言
(2)C语言的发展:
国际标准语法
ANSIC(89年推出,被称为C89) - C89/C90
后来推出的C99/C11并不流行 - 不少编译器不支持
2.第一个c语言程序
创建工程 - 添加源文件 - 写代码
写c代码时:.c - 源文件 .h - 头文件
(1)程序(例1)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
printf("hehe\n");
return 0;
}
(例1)中 ,main(主函数,也叫程序的入口)快捷键win+F10 =代码执行
main前面的 int 是整形的意思,即表示main函数调用返回一个整形值
return 0 即代表返回的整形值为0
printf是打印函数,拆开为print function,printf是一种库函数,库函数由C语言本身提供,当我们使用库函数时,需要一个引用函数声明----即 #include 表示以下函数包含……(某函数文件)。
stdio.h --- std(standard )i(input)o(output)标准输入输出文件
(2)程序(例2)
int main()
{
float f = 2.0;
printf("%f\n", f);
return 0;
}
(例2)中,float f = 2.0表示,向内存申请空间存储创建单精度浮点数 f ,变量f=2.0。
类似还有
char //字符数据类型
short //短整型 int //整形 long //长整形
float //单精度浮点数
double //双精度浮点数
可以利用单目运算符计算各个数据类型所申请的容量大小,单目运算符size(尺寸) of=求出对象在计算机内存中所占用的字节(byte)数,最终计算为 1244848
int main()
{
printf("%lld\n",sizeof(char));
printf("%lld\n",sizeof(short));
printf("%lld\n",sizeof(int));
printf("%lld\n",sizeof(long));
printf("%lld\n",sizeof(long long));
printf("%lld\n",sizeof(float));
printf("%lld\n",sizeof(double));
return 0;
}
(3)单位
字节
计算机中的单位
bit - 比特位,byte - 字节,kb,mb,gb,tb,pb
计算机是硬件 -- 通电
正电 负电
1 0
bit,一个比特位,存放一个二进制位,即存放1或0
byte,一个字节存放8个bit(比特位)
1pb=1024tb=1024gb=1024mb=1024kb=1024字节
short的容量是2个字节,即16个bit,共2^16个数,最大表示2^16-1
那么其存放的数如下:
0000000000000000=0
0000000000000001=1
0000000000000010=2
0000000000000011=3
......
111111111111111110
111111111111111111=1*2^0+1*2^1+……+1*2^15=2^16-1=65535
3.常量和变量
(1)变量
int main()
{
short age = 20;//向内存申请2个字节(即16bit位),用来存放20
return 0;
}
①变量定义方式:类型+变量名+赋值
int age = 150;
float weight = 45.5f;
char ch = 'w';
②变量分类:局部变量,全局变量
int num1 = 20;//全局变量-定义在代码块({})之外的变量
int main()
{
int num1 = 10;//局部变量-定义在代码块之内(大括号内部的变量都叫局部变量)
printf("%d\n",num1);
return 0;
}
局部变量和全局变量相同时,局部变量优先级高。但最好不要相同,容易bug。
③变量的使用
如计算两个数的和(scanf函数,为输入函数,可在代码运行后,手动输入数值)
int main()
{
int num1 = 0;
int num2 = 2;
int sum=0;
scanf("%d%d",&num1,&num2);//&取地址符号(num1和num2存放在内存的某个地址中),scanf-库函数,使用输入数据
sum=num1+num2;
printf("sunm=%d\n",sum);
return 0;
}
④作用域(变量起作用的范围)scope
全局变量的作用域是整个工程,局部变量的作用域是其所在的局部范围(大括号内)
⑤生命周期(类似作用域)
(2)常量
分为字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量
1)字面常量和const修饰的常变量
int main()
{
const int num=4;//(诺没有const这是一个变量,赋值后可变化为8,但是加了const后便成为了常量)
printf("%d\n",num);//(const为常属性,num成为了const修饰的变量,叫常变量)
num=8;//(常变量无法修改,但无法作为常量来使用)
int arr[10]={0};//(这是一个创建数组的方式,10代表数组含有10个元素,这里10无法用num代替,因为[]里面必须是常量,而num不是常量])
printf("%d\n",num);
3;//字面常量
3.14;//字面常量
return 0;
}
2)#define定义的标识符常量
#define MAX 10
int main()
{
int arr[MAX]={0};//(MAX是常量,所以数组代码可以跑起来)
printf("%d\n",MAX);
return 0;
}
3)枚举常量
枚举:是一一列举出来
例如三原色:红,黄,蓝
枚举关键字=enum
enum Sex
{
MALE,
FEMALE,
SECRET//(保密)
};//(MALE,FEMALE,SECRET为枚举常量)
int main()
{
enum Sex s=FEMALE;//(用FEMALE给前面的s赋值)
s=MALE;//(s是变量,可以改,枚举常量指的是MALE,FEMALE,SECRET的值不变)
printf("%d\n",MALE);//默认为0
printf("%d\n",FEMALE);//默认为1
printf("%d\n",SECRET);//默认为2,默认值不可改变
return 0;
}