C 基础 - 预处理命令和基本语法详解

cpp 复制代码
#include <stdio.h> //预处理指令

int main()   //函数
{
	printf("Hello, World!"); //输出语句
	return 0; //返回语句 
}

目录

一.预处理指令

[1.#define #ifdef #ifndef #if #else #elif #endif](#define #ifdef #ifndef #if #else #elif #endif)

2.#inlcude

a.新增一个文件

b.#include

c.运行结果

d.扩展

[e.<> 和 "" 的区别](#e.<> 和 "" 的区别)

二.基本语法

一定要注意,编程时请选择正确的输入法,严格区分中英文;

1.语句由分号结束

2.部分语句例子(这里面代表的含义,后面会有详解)

3.注释

4.标识符

5.关键字


一.预处理指令

指令 描述
#define 定义宏
#include 包含一个源代码文件
#undef 取消已定义的宏
#ifdef 如果宏已经定义,则返回真
#ifndef 如果宏没有定义,则返回真
#if 如果给定条件为真,则编译下面代码
#else #if 的替代方案
#elif 如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码
#endif 结束一个 #if......#else 条件编译块
#error 当遇到标准错误时,输出错误消息
#pragma 使用标准化方法,向编译器发布特殊的命令到编译器中

例子

1.#define #ifdef #ifndef #if #else #elif #endif

运行结果,而且在vs里面可以看的,条件没达成,不允许的语句变灰了.

代码

cpp 复制代码
#include <stdio.h> //预处理指令
#define PI 3   //定义宏

int main()   //函数
{
	printf("PI = %d \n",PI); //输出为  PI=3

#ifdef  PI   //如果宏PI以定义则条件为真
	printf("true \n"); //输出为 true
#endif //  PI

#ifndef  PI   //如果宏PI没定义则条件为真
	printf("false \n"); //输出为 false
#endif //  PI

#if PI == 1     
	printf("PI == 1 \n ");
#elif PI == 2 
	printf("PI == 2 \n ");
#else
	printf("PI == 3  \n");
#endif
	return 0; //返回语句 
}

2.#inlcude

当预处理器发现#include 指令时,会查看后面的文件名并把文件的内容包含到当前文件中.

例子

a.新增一个文件

b.#include

c.运行结果

d.扩展

#include "DefinePI.cpp" 就是把 DefinePI.cpp里的内容 复制到这里.替换掉 #include "DefinePI.cpp"

e.<> 和 "" 的区别

尖括号告诉预处理器在系统类库目录中查找该文件。

按住Ctrl,鼠标左键点击 stdio.h,即可跳转.后续的函数,变量定义也可用此方式跳转

双引号是从当前路径开始查找,

比如:

在同一个文件夹下,就可以直接 #include "DefinePI.cpp"

不在同一个文件夹内,就要添加路径 我们新建一个文件夹,

添加上路径.

二.基本语法

一定要注意,编程时请选择正确的输入法,严格区分中英文;

1.语句由分号结束

cpp 复制代码
printf("Hello, World! \n");
return 0;

2.部分语句例子(这里面代表的含义,后面会有详解)

cpp 复制代码
	int a;

	int a1 = 1;

	bool b = true;
	char c = 1.0f;

3.注释

注释是给人看的,编译器遇到的时候会直接跳过.

cpp 复制代码
#include <stdio.h>
int main()   
{
	//这是单行注释

	/*
	这是多
	行注释	
	*/

	return 0; 
}

4.标识符

就是上面距离代码中 , int a1 = 1; a1就是标识符,用来方便区分,和后面的使用.

还可以用来标识(一下只做了解)

  • 函数名 ( 比如前面使用到的 int main() main 就是函数名)
  • 结构体
  • 指针
  • 数组
  • 自定义的项目名称等等

规则是

允许:

一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)

如: name , School_Name


不允许:

出现标点字符


对大小写敏感,区分大小写,

如: School_Name ,school_name ,school_Name 是三个不同的标识符

5.关键字

是C语言保留的一些有特殊作用词语,不可以用来做标识符;

详解

关键字 描述
auto 声明自动变量
double 声明双精度变量或函数
typedef 用以给数据类型取别名
register 声明寄存器变量
short 声明短整型变量或函数
char 声明字符型变量或函数
const 声明只读变量
static 声明静态变量int声明整型变量或函数
struct 声明结构体变量或函数
unsigned 声明无符号类型变量或函数
volatile 说明变量在程序执行中可被隐含地改变long声明长整型变量或函数
union 声明共用数据类型
signed 声明有符号类型变量或函数
void 声明函数无返回值或无参数,声明无类型指针float声明浮点型变量或函数
enum 声明枚举类型
extern 声明变量是在其他文件正声明
if 条件语句
else 条件语句否定分支(与 if 连用)
switch 用于开关语句
case 开关语句分支
for 一种循环语句do循环语句的循环体
while 循环语句的循环条件
goto 无条件跳转语句
continue 结束当前循环,开始下一轮循环break跳出当前循环
default 开关语句中的"其他"分支
sizeof 计算数据类型长度
return 子程序返回语句(可以带参数,也可不带参数)循环条件
相关推荐
一叶飘零_sweeeet1 分钟前
为什么 Feign 要用 HTTP 而不是 RPC?
java·网络协议·http·spring cloud·rpc·feign
天下无贼!8 分钟前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr9 分钟前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林12 分钟前
npm发布插件超级简单版
前端·npm·node.js
懒洋洋大魔王22 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
茶馆大橘26 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea30 分钟前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)33 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹35 分钟前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
罔闻_spider1 小时前
爬虫----webpack
前端·爬虫·webpack