- 计算机中的单位
bit 比特位,计算机中最小的单位,计算机中存储0、1
byte 字节,大小为8个比特位,1byte=8bit
kb 1024个字节
mb 1024个kb
tb 1024个mb
pb 1024个tb
char 一个字节
int 4个字节,拥有32个比特位,能够表示的数字范围为 2的32次方减去一
short 短整型,拥有2个字节,16为的比特位,表示范围是2的16次方减去一,也就是65535;因此可以选择合适的字符类型,节省内存空间。
2. float 在给单精度 赋值时,会默认小数为双精度浮点数,可在小数后面加f,例如float pai=3.14f;
3. 变量:
全局变量:定义在代码块({})之外的变量;
局部变量:定义在代码块({})之内的变量:
#include <stdio.h>
int a=100;
int main()
{
int b=100;
return 0;
}
其中a 为全局变量,b为局部变量;当全局变量和局部变量名字相同时,局部变量优先
#include <stdio.h>
int main()
{
{
int a=100;
}
printf("%d\n",a);
return 0;
}
此时a为局部变量,不能在代码块以外引用,程序无法运行。
4. 当使用scanf、strcpy、strlen等函数时,VS编译器会认为这种函数不安全,可使用另一种函数,但不推荐,因为VS编译器提供的函数不具有跨平台性;推荐增加
#define _CRT_SECURE_NO_WARNINGS
一行代码在前面即可。
5. 常量
//const修饰的常变量
const int num=4;
printf("%d\n",num);
num=8;
printf("%d\n",num);
//#define 定义的标识符常量;在后面给num赋值后,num的值不会改变
#define MAX 10
//枚举常量
//枚举关键-enum
enum Sex
{
MALE,
FEMALE,
SECRET
};
-
字符串类型
'\0’字符串的结束标志;在字符串中\0是结束标志,不作为字符串内容;
转义字符:\t 水平制表符;\n 换行;
打印字符串用%s,打印字符用%c;当想要打印’或者"时可使用printf("%c\n",'\'');
或者printf("%s\n","\"");
\ddd 中ddd表示1~3个八进制的数字,如:\130 ;
\xdd dd表示两个16进制数字,如:\x30 ; -
算术操作符
/ 取商 %取余数
移位操作符
<<左移 >>右移;移动二进制位;向左移动后,空出的位置由0补上
#include<stdio.h>
int main()
{
int a=1;
int b=a<<2;
printf("%d\n",b);
}
最终b的输出结果为4;
位操作
& 按位与 | 按位或 ^ 按位异或,对应的二进制位相同则为0,不同则为1
int a=5;
int b=3;
//a=0101
//b=0011
printf("%d\n",a&b);
//a和b对应位数上有0则结果位数上为0
//a和b对应位数上有1则结果相应位数上为1
//因此结果分别为1 和 7
复合赋值符
+= -= &= |= ^= <<= >>= /= *=等等都是;例如a>>=2
也就是a=a>>2
.
单目操作符
! 逻辑反操作
-负值 + 正值
& 取地址
sizeof 计算的是变量或者类型所占空间的大小,单位是字节(byte)
~ 对一个二进制数按位取反
++
(类型) 强制转换类型int a=(int)3.14;
逻辑操作符 && 逻辑与 ||逻辑或
双目操作符
三目操作符
条件操作符 exp1?exp2:exp3;exp1表达式的值如果为真,则整个表达式的结果exp2的结果;若exp1表达式的值为假,则整个表达式的结果为exp3的值。
逗号表达式 exp1,exp2,exp3
下标引用 函数调用
补码、原码和反码
在存储中都是二进制的补码
- 正数的原码、补码和反码均相同
- 负数:原码直接写,反码的符号位不变,其他位按位取反得到,补码由反码加一得到
关键字
- typedef 类型重命名
typedef unsigned int u_int;
u_int num=20;
//与 int num=20;完全一样
2.static 修饰局部变量,使局部变量生命周期变长
static修饰全局变量,改变变量的作用域;让静态的全局变量只能在自己所在的源文件内部使用;
static 修饰函数,也会改变函数的作用域,static会改变函数的连接属性,将外部连接属性变为内部连接属性。
3define 定义标识符常量;也可以定义宏;
指针
int main()
{
int a=10;
int*p=&a;//取地址
printf("%p\n",&a);
printf("%p\n",p);
*p=20;//*-解引用操作符;通过*p找到a并将a的值改为20;
printf("%d\n",a);
printf("%d\n",p);//指针的大小
return 0;
}
指针变量的大小:指针大小在32位平台是4个字节,在64位平台是8个字节。
结构体
#include<stdio.h>
#include<string.h>
struct Book
{
char name[20];
char writter[10];
short price;
};
int main()
{
struct Book b1={"C语言程序设计","xtc",55};
struct Book* pb=&b1;//利用pb打印
printf("name:%s\n", (*pb).name);
printf("name:%s\n", (*pb).writter);
printf("price:%d\n", (*pb).price);
strcpy(b1.name,"C++");//strcpy--字符串拷贝,需要库函数 string.h
printf("name:%s\n", pb->name);
//. 结构体变量.成员
//-> 结构体指针->成员
b1.price=35;
//price为变量,因此可以直接通过赋值的方式改变值,但是name和writter为字符串,不能直接赋值更改
printf("name:%s\n",b1.name);
printf("writter:%s\n",b1.writter);
printf("price:%d\n",b1.price);
return 0;
}
分支与循环
- IF
if语句和else语句条件成立时要执行多条语句,则应该使用代码块{}
当拥有多个if时,else会和最近的if进行匹配
当if中的表达式为真时,则执行if后面的语句
不为真,则执行else后的语句
#include<stdio.h>
int main()
{
int age=18;
if(age<18)
printf("未成年\n");
else if(age>=18&&age<28)
printf("青年\n");
return 0;
}
switch语句
switch允许嵌套使用
switch(整形表达式)
{
case 整形常量表达式1:表达式;break;
//不能使用浮点型,变量,
//当执行完1时,会直接跳出代码块,如果没有break;则继续执行下面语句,不需匹配结果直接执行
case 整形常量表达式2:表达式;break;
case 整形常量表达式3:表达式;break;
default:
printf("输入错误");
break;
//default 与case执行没有顺序要求,放在前后均可,但推荐放在最后
//在表达式中,可以出现if语句,但是不能用continue
}
while循环
当表达式为真时,则执行循环语句
while(表达式)
循环语句;
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
continue;
printf("%d ", i);
i++;
}
return 0;
}
当循环内部有continue时,并且执行到continue,则continue之后的语句不再执行,直接跳过,并判断是否执行下次循环;break则是永久终止循环;
#include<stdio.h>
int main()
{
int ch=0;
while((ch=getchar())!=EOF)
{
putchar(ch);
//程序是停不下来的
//此时输入EOF也不会停下,因为在输入E、0、F时getchar就已经分别打印,不会与EOF相等
//可在输出框输入ctrl+z结束
//EOF是end of File,值为-1;
}
}
当输入密码123456时,需要回车才能被scanf函数读取,而scanf函数只读取\n之前的符号,因此留下了符号’\n’,在利用getchar给ret赋值时,在输入缓冲区读取到留下的字符’\n’;从而打不到想要的结果
可在ret=getchar();前再加一个输入语句:getchar();
可以使用while循环语句;一直读取直到读取到’\n’ 而循环内部不做任何;
FOR循环
初始化、判断、调整集中在一个位置
- 语法:for(表达式1;表达式2;表达式3)
循环语句;
- 建议不可在for循环内修改循环变量,防止for循环失去控制
for语句的循环控制变量取值采用“前闭后开”区间写法 - for循环的初始化、判断、调整均可省略;当判断被省略时,则判断条件恒为真
do-while 循环
- 语法
do
循环语句;
while(表达式); - 流程