c语言知识点整理3
运算符补充
&&
先判断前面,再判断后面
若前面不符合后面不执行
int i = 10;
int j = 20;
if(i>20&&j++>10){
...
}
printf("%d",j);
输出20,因为前一个条件不满足,所以后一个条件中的自加不执行
||
前后都要执行,不论是否成立
int i = 10;
int j = 20;
if(i>20||j++>10){
...
}
printf("%d",j);
输出21
++
int temp1 = 20;
printf("%d\n",temp1++)
等效于
printf("%d\n",temp1);
temp1=temp1+1;
a++表达结束之后再加一
++a 先加一再执行表达式
数据类型转换
隐形转换
两种不同类型出现时,自动从低到高转换
char int float double long
强制转换
int b =(int) a
自定义头文件.h和实现文件.c
- .h 函数的声明 变量的声明(不能赋值)
- .c 具体实现 实现函数的功能 操作变量
可以实现将函数的声明和实现分离开来
封装:封装某些功能;便于移植=方便下一次使用
方法
- 创建.h文件
声明函数 - 创建.c文件
函数的具体实现 - 在.c文件中导入.h文件
相当于.c文件里面有函数的声明和实现 - 在使用的地方导入.h文件
注意- 尽量让.h和.c文件名相同
- 头文件相互引用会出错
可以用宏定义解决
#ifndef ATM_HHHH
#define ATM_HHHH
具体代码块
#endif
宏定义
- 给特定的数值一个意义
- 便于管理
- 定义一个表达式(开关)
#define wechat 1;
#include "pch.h"
#include <iostream>
#if 1
#define Log(x) printf(x)
#else
#define Log(x)
#endif
int main()
{
Log("ccc\n");
}
数组
为什么使用数组
基本数据类型 只能存储一个数据
int float double long char bool
数组 需要存储多个同种类型的数据
- 能够存储数据 就必须要有内存
- 如何定义一个数组的同时为它分配内存空间
- 数组定义时必须明确知道数组的大小
a. 初始化几个就是几个
b. 定义时明确指定数组的大小
int temp[5];
c. 明确制定大小并且初始化
int temp[5]={1,2};
- 数组的名字就是数组的首地址(第一个元素的地址),使用%p打印地址
printf("%p\n",&score[0]);
printf("%p\n",score);
会显示相同结果
如何使用一个数组
- 访问 通过下标来 0 - n-1
printf("%d\n".temp[0]);
- 赋值
temp[0] = 6;
demo 十进制转换二进制/十六进制
转换二进制
int num = 0;
int res[20];
int i = 0;
printf("请输入一个十进制数:");
scanf_s("%d", &num);
do {
res[i] = num % 2;
num /= 2;
i++;
} while (num >= 1);
for (int j = i-1; j >= 0; j--) {
printf("二进制为%d", res[j]);
}
转换十六进制
int num = 0;
int res[20] ;
int i = 0;
printf("请输入一个十进制数:");
scanf_s("%d", &num);
do {
res[i] = num % 16;
num /= 16;
i++;
} while (num >= 1);
for (int j = i-1; j >= 0; j--) {
if (res[j] > 11) {
printf("%c",'a' + res[j] - 10);
}
else {
printf("%d",res[j]);
}
}
体会
上午听自定义头文件的时候vs扯拐得很,一直无法读取,弄着弄着pch.h也无法读取了...后面重新做了一次有什么问题都没了。下午做十六进制转换的时候,脑袋卡壳了,直接用%x就转换了,可能真的该补脑了。
网友评论