C、C++预处理详解
什么是预处理?
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。
简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。
指令
描述
#include
包含一个源代码文件
#define
定义宏
#undef
取消已定义的宏
#ifdef
如果宏已经定义,则返回真
#ifndef
如果宏没有定义,则返回真
#if
如果给定条件为真,则编译下面代码
#else
#if 的替代方案
#elif
如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码
#endif
结束一个 #if……#else 条件编译块
#error
当遇到标准错误时,输出错误消息
#pragma
使用标准化方法,向编译器发布特殊的命令到编译器中
#include
#include 是C语言中的一个预处理指令,它的主要作用是将外部的头文件(header files)内容包含到当前的源代码文件中。
头文件通常包含了函数声明、宏定义、结构体和其他变量的声明等,以便在当前源代码文件中使用这些声 ...
C、C++其他关键字详解
其它关键字
const
作用:const 用于声明常量,表示变量的值不可被修改。
示例:
12const int age = 30; // 定义一个不可修改的整数常量age = 35; // 这里会导致编译错误,因为常量不可被修改
sizeof
作用:sizeof 用于获取数据类型或变量占用的内存字节数。
示例:
123int x = 10;size_t size = sizeof(x); // 获取整数变量 x 占用的字节数printf("x 占用的字节数为: %zu\n", size);
typedef
作用:typedef 用于创建自定义数据类型的别名。
示例:
12typedef int Age; // 创建一个名为 Age 的整数别名Age myAge = 25; // 使用 Age 别名定义整数变量
另一个示例:
12345678typedef struct {int x;int y;} Point;Point p;p.x = 5;// 使用自定义的数据类型别名 Point 来声明变量
volatile
作用:vol ...
C、C++存储类型关键字详解
存储类型关键字
auto
auto 是默认的存储类别关键字,它用于定义自动变量。
自动变量的生命周期仅限于定义它们的代码块,当代码块执行结束时,它们会被销毁。
示例代码(记作代码1):
12345678#include <stdio.h>int main() { auto int x = 10; // 可以省略 "auto",因为它是默认的存储类别 printf("x: %d\n", x); // x 的生命周期仅限于 main 函数 return 0;}
在上方代码1中,auto int x = 10;和int x = 10;是等效的:
这是因为 int x = 10; 默认就是一个自动变量,编译器会根据上下文自动识别它为自动变量。
同样,例如下方代码(记作代码2):
1234567891011#include <stdio.h>int main() { auto int x = 10; // 可以省略 "auto",因为它是默认的存储类 ...
C、C++控制语句关键字详解
控制语句关键字
下面是关于循环语句和条件语句的详细解释,包括特性、用法以及示例代码。我将注释来解释每个示例的执行流程,以及这些语句通常在哪些方面使用。
循环语句:
for
特性:for 循环用于重复执行一段代码,通常在已知循环次数的情况下使用。
用法示例:
1234for (int i = 0; i < 5; i++) { // 初始化;条件;迭代 // 循环体代码 printf("%d\n", i); // 打印当前循环次数}
示例中的for循环会执行5次。
最终打印出0到4这五个数字:
0
1
2
3
4
for常用于在一个范围内进行循环。
while
特性:while 循环用于根据条件重复执行一段代码,通常在循环次数不确定的情况下使用。
用法示例:
123456int i = 0;while (i < 5) { // 条件 // 循环体代码 printf("%d\n", i); // 打印当前循环次数 i++; // 迭代}
示例中的 ...
C、C++数据类型关键字详解
数据类型关键字
以下是对每个C语言数据类型关键字的详细解释,包括其包括特性、用法以及可能的范围和精度限制。
char
特性:char(字符型)用于存储单个字符,通常占用1个字节的内存空间。它可以表示ASCII字符集中的字符。范围通常为-128到127。
用法:通常用于存储字符或小整数值。
示例代码:1char letter = 'A'; // 定义一个字符变量并赋值
short
特性:short(短整型)用于存储整数值,通常占用2个字节的内存空间。范围通常为-32768到32767。
用法:适用于节省内存空间但需要存储整数的情况。
示例代码:1short temperature = -10; // 定义一个短整数变量并赋值
int
特性:int(整型)用于存储整数值,通常占用4个字节的内存空间。这是最常用的整数类型。范围通常为-2147483648到2147483647。
用法:通常用于存储整数,执行基本数学运算等。
示例代码:
1int count = 100; // 定义一个整数变量并赋值
int类型在计算过程中,会仅保留整数位,比如:
...
C、C++关键字
本文章面向初学者问题:对C语言中的相应字符和单词用法不理解
初学者第一次接触到的程序大都是打印hello world
123456#include <stdio.h>int main() { printf("Hello World!\n"); return 0;}
作为初学者,面对代码中的include、int、main、printf,大部分人是不懂为什么用这些东西就可以做到打印hello world的效果的。
先了解两个概念:关键字 和 预处理
什么是关键字?
在C/C++中,我们常说到的关键字就是用于编程的一些具有特殊作用的词语
以下内容,详情请看各分块所给的链接详解
数据类型关键字
详情情看:C/C++数据类型关键字详解 | www.drluo.top
char:声明字符型变量或函数
short: 声明短整型变量或函数
int: 声明整型变量或函数
float:声明单精度浮点型变量或函数
double:声明双精度浮点型变量或函数
long:声明长整型变量或函数(实际声明长整型会使用long long)
sign ...
C++药品管理系统
爱来自ZZULI❤drluo
本项目旨在编写一个以 C 语言为基础框架的程序,实现对药品数据的相关管理操作(增、删、改、查、统计)。
统由六大主模块和三大辅助模块构成:
六大主模块:
登录/注册模块:界面化的登录/注册操作,具有相关登录提示功能。
药品添加模块:用户可直接向相应文本框种输入药品数据,具备相关错误检查和处理机制,可防止无效药品信息的输入。
药品删除模块:数据表格与删除按钮的结合,鼠标移动到相关删除按钮时,表格会进行高亮,用户可通过点击删除按钮来直接进行删除操作。
药品修改模块:类似于药品删除模块,数据表格与修改按钮相结合,用户仅需通过点击修改按钮即可修改所选内容。
药品查询模块:数据完备的查询方法,用户可以选择性的给出查询内容,对用户所给内容进行全表的模糊匹配后,给出查询结果。
药品统计模块:具备多种统计方法(按药品名称排序、按药品制造商排序、按药品生产日期排序、按药品保质期排序、按药品库存量排序),用户仅需点击相关按钮,通过程序的快排函数,以最快速度给出相关统计结果。
三大辅助模块:
按钮模块:基于easyx模块实现,通 ...
Bi-LSTM(Attention)的PyTorch实现
实现如下,代码解释以注释的方式呈现
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519 ...
C语言实现波士顿房价预测
波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。和大家对房价的普遍认知相同,波士顿地区的房价受诸多因素影响。该数据集统计了13种可能影响房价的因素和该类型房屋的均价,期望构建一个基于13个因素进行房价预测的模型,如 下图所示。
对于预测问题,可以根据预测输出的类型是连续的实数值,还是离散的标签,区分为回归任务和分类任务。因为房价是一个连续值,所以房价预测显然是一个回归任务。下面我们尝试用最简单的线性回归模型解决这个问题,并用神经网络来实现这个模型。
线性回归模型
假设房价和各影响因素之间能够用线性关系来描述:
$$
y = \sum_{j=1}^M w_jx_j + b (公式1)
$$
模型的求解即是通过数据拟合出每个$w_j$和$b$。其中,$w_j$和$b$分别表示该线性模型的权重和偏置。一维情况下,$w_j$ 和 $b$ 是直线的斜率和截距。
线性回归模型使用均方误差作为损失函数(Loss),用以衡量预测房价和真实房价的差异,公式如下(其中$\widehat Y_i$为预测值 $Y_i$为实际值):
$$
s = \frac{1}{n}\ ...
easy库的使用
C++easy库
加载动画
easyx库本身并没有给出gif的加载函数,所以我们需要通过另一种方式实现gif的“播放”
通过将gif图提取出相应关键帧,然后对关键帧进行逐帧播放
以下是代码示例
123456789101112131415161718192021222324252627282930313233343536373839#include <graphics.h>#include <conio.h>#include <stdio.h>#include <iostream>IMAGE images[92];//92张关键帧bool isLoaded = 0;void loadImg() { wchar_t filename[20]; for (int i = 0; i < 92; i++) { //这里我是将原有的gif图拆分为了92张关键帧 wsprintf(filename, _T("../gif/%d.png"), i + 1); ...