一.什么是C语言
1.是人与计算机交流的语言,广泛应用于底层的开发,就是操作系统 及以下的开发
2.C语言有国际标准 ANSIC
3.计算机语言:计算机语言-> 汇编语言(助记符)->B语言->C语言
二、数据类型
1.类别以及长度
之所以会有不同的数据类型,是为了节省空间 ,提高空间的利用率。
char 字符数据类型
short 短整型
int 整形
long 长整型
long long 更长的整形
float 单精度浮点型
double 双精度浮点型
计算数据类型的长度 sizeof() 计算出来的单位是byte (字节,1字节8个bit位)(下图附上计算机中的单位)
#include<stdio.h>
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));
}
2^10=1024
类型 | 字节 | bit |
char | 1 | 8 |
short | 2 | 16 |
int | 4 | 32 |
long | 4 | 32 |
long long | 8 | 64 |
float | 4 | 32 |
double | 8 | 64 |
2.数据类型是用来创建变量
三、常量和变量
1.创建变量
类型名 变量名 = 一个值;
#include<stdio.h>
int main()
{
//定义变量,
//类型 变量名 = 0;最好要初始化
int age = 20;
int a;
double weight = 46.2;
//变量可以变化
age = age + 1;
printf("%d\n", age);
printf("%lf\n", weight);
return 0;
}
易错点:输出的时候,float 用%f,double用%lf 。
2.变量的分类 全局变量 和局部变量 局部优先
#include<stdio.h>
int a = 20;//全局变量,定义在{}外面的变量,作用范围是整个工程
int main()
{
int a = 19; //局部变量,定义在{}里面的变量
printf("%d\n", a);//当 全局变量和 局部变量名字冲突时,局部优先
return 0;
}
再述:
3.变量的生命周期
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束;
全局变量的生命周期是:相当于程序的生命周期;
4.常量
用来表示一些不变的量
1.字面常量
2.const定义的常变量
3.define定义的标识符常量
4.枚举常量enum
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define Max 200
enum Color
{
RED,
GREEN,
BLUE
};
int main()
{
//1.字面常量
// 20;
// 33.9;
// 'l';
// "licongcong";
//2.const定义的常变量
const int a = 10;
//a = 20;//上一行使用const之后,这一行编译时会报错
printf("%d\n", a);
//常变量还是一个变量,只不过是具有常量的属性
const int t = 10;
int arr[10] = { 0 };
//3.define定义的标识符常量
printf("%d\n", Max);
//Max = 300;它的值不能再被改变
printf("%d\n", Max);
//4.枚举常量 ,日常生活中可以枚举出来的,颜色、性别
enum Color c = RED;
return 0;
}
5.字符串+转义字符+注释
5.1字符串
字符串 以\0作为结束标志,不计算在字符串的长度里面(c语言没有字符串类型,有字符类型char ,单引号引起来的 ‘a’)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
int main()
{
//那么怎么来存字符串呢,可以用数组
char arr[7] = "abcdef";
char arr1[] = "abcdef";//可以不指定长度
char arr2[] = {'a','b','c','d','e','f','\0'};//在后面加上'\0',可以输出abcdef
printf("%s\n", arr1);
printf("%s\n", arr2);
//strlen是计算字符串长度的函数
int a = strlen(arr1);//6
int b = strlen(arr2);//6
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
数组arr1里面有隐藏的\0,而arr2里面没有的。
5.2.转义字符
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解释成三字母词,三字母词(比如以前将??)控制台输出式可以是],但现在已经没有三字母词) |
\' | 用于表示字符常量’ |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130X |
\xdd | dd表示2个十六进制数字。如:\x30 0 |
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string>
int main()
{
//\?
// printf("%s\n", "I am a sweet girl\?\?)");
//I am a sweet girl]
// %c 打印字符类型
// %s 打印字符串类型
// %zu 打印sizeof类型
//\'
//printf("%c\n",'\'');
//\"
//printf("%c\n", "\"");
//\\
printf("abc\\0def");//abc\0def
//电脑发出的一个声音
//printf("\a");
//\t 就是Tab键的作用
//printf("D:\test\test1");
//\ddd 表示八进制数
//printf("%c\n", '\130');
//输出X,将\130所表示的八进制数转化成10进制数(88),
//再输出这个十进制数所对应的字符
//\xdd 表示16进制的数
//printf("%c\n", '\x61');
//输出a,同理,将\x61所表示的16进制的数转化成10进制,
//并输出这个十进制数所对应的字符
//16进制转化成10进制的数字的范围
// (也就是ASCII码的范围)应在0-127
//一个计算题
printf("%d\n", strlen("D:\test\628\test.c"));//14
//记得引入头文件
//\t算一个字符,但是输出的效果相当于4个字符
return 0;
}