什么是预处理器指令,常用的预处理器指令有哪些?什么是运算符,C 语言中的运算符有哪些?
1.什么是预处理器指令,常用的预处理器指令有哪些?
预处理器指令是一种用于在源代码编译之前进行预处理的特殊指令。它们通过在程序编译之前对源代码进行处理,可以在编译阶段之前进行一些文本替换、条件编译等操作,从而对源代码进行一些宏定义、条件编译等操作。
常用的预处理器指令有以下几种:
- #define:用于定义宏,可以将一些常量或者代码片段定义为宏,在编译时会进行文本替换。
- #include:用于包含头文件,将指定的头文件内容插入到当前位置。可以用于引入其他源代码文件或者库文件的声明和定义。
- #ifdef / #ifndef:条件编译指令,用于根据条件判断是否编译某段代码。通过判断某个宏是否已经定义,可以实现条件编译。
- #if / #elif / #else / #endif:条件编译指令,可以根据表达式的结果决定是否编译某段代码。
- #undef:用于取消定义的宏。
- #pragma:用于向编译器发送特定的指令或者设置。不同编译器支持的pragma指令可能不同。
这些预处理器指令可以帮助开发者在编译阶段之前对源代码进行一些宏定义、条件编译等操作,从而实现一些灵活的编译控制和代码重用。
2.什么是运算符,C 语言中的运算符有哪些?
运算符是用于执行特定操作的符号或关键字。在C语言中,常见的运算符有以下几种:
-
算术运算符:用于执行基本的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)。
-
关系运算符:用于比较两个值之间的关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
-
逻辑运算符:用于执行逻辑运算,包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。
-
位运算符:用于对二进制位进行操作,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。
-
赋值运算符:用于给变量赋值,包括简单赋值(=)、加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)和取模赋值(%=)。
-
自增和自减运算符:用于增加或减少变量的值,包括自增(++)和自减(–)。
-
条件运算符:也称为三元运算符,用于根据条件选择不同的值,语法为(condition ? value1 : value2)。
-
其他运算符:包括取地址运算符(&)、指针运算符(*)、成员访问运算符(.和->)等。
这些运算符可以用于不同的数据类型和表达式,用于执行各种操作和计算。
3.什么是表达式,C 语言中的表达式有哪些类型?
表达式是由运算符和操作数组成的组合,用于计算一个值。
在C语言中,表达式有以下几种类型:
-
算术表达式:用于执行基本的数学运算,例如加法、减法、乘法和除法。例如:
a + b、x * y。 -
逻辑表达式:用于执行逻辑运算,例如与、或、非。逻辑表达式的结果可以是真(非零)或假(零)。例如:
a && b、x || y、!z。 -
关系表达式:用于比较两个值的大小关系,结果为真或假。例如:
a > b、x <= y、z == 0。 -
位运算表达式:用于对二进制位进行操作,例如按位与、按位或、按位取反。例如:
a & b、x | y、~z。 -
赋值表达式:用于将一个值赋给一个变量。例如:
x = 10、y += 5。 -
条件表达式:也称为三元表达式,根据一个条件的真假来选择两个不同的值。例如:
x > y ? x : y。 -
函数调用表达式:用于调用一个函数,并返回函数的返回值。例如:
printf("Hello, world!")。 -
数组访问表达式:用于访问数组中的元素。例如:
arr[index]。 -
结构体成员访问表达式:用于访问结构体中的成员。例如:
person.name。
以上是一些常见的表达式类型,C语言还提供了其他类型的表达式,例如逗号表达式、sizeof表达式、类型转换表达式等。
4.什么是语句,C 语言中的语句有哪些类型?
语句是计算机程序中的基本单位,它指定了计算机应该执行的操作。在 C 语言中,语句可以分为以下几种类型:
-
表达式语句:表达式语句是由一个表达式和一个分号组成的语句,它用于执行一些计算或操作,例如赋值语句和函数调用。
-
控制语句:
- 条件语句:包括 if 语句、switch 语句。if 语句根据条件的结果来决定执行哪个代码块,而 switch 语句则根据表达式的值选择执行哪个 case 分支。
- 循环语句:包括 for 语句、while 语句、do-while 语句。for 语句用于循环执行一段代码,while 语句和 do-while 语句也是用于循环执行,但它们的循环条件在不同的位置。
- 跳转语句:包括 break、continue 和 goto 语句。break 用于跳出当前循环或 switch 语句,continue 用于结束当前循环的迭代并开始下一次迭代,goto 语句用于无条件地转移到程序中的其他位置。
-
复合语句:复合语句(也称为块语句)是由一对花括号括起来的语句序列,可以包含多个语句。复合语句常用于为函数、循环和条件语句创建代码块。
-
空语句:空语句只包含一个分号,它在语法上是一个有效的语句,但不执行任何操作。空语句通常用于某些特殊场景,例如在循环中暂时不需要执行任何操作。
以上是 C 语言中常见的语句类型,通过组合和嵌套这些语句,可以构建出复杂的程序逻辑。
相关文章:
什么是预处理器指令,常用的预处理器指令有哪些?什么是运算符,C 语言中的运算符有哪些?
1.什么是预处理器指令,常用的预处理器指令有哪些? 预处理器指令是一种用于在源代码编译之前进行预处理的特殊指令。它们通过在程序编译之前对源代码进行处理,可以在编译阶段之前进行一些文本替换、条件编译等操作,从而对源代码进…...
新功能 – Cloud WAN:托管 WAN 服务
我很高兴地宣布,我们推出了 Amazon Cloud WAN,这是一项新的网络服务,它可以轻松构建和运营连接您的数据中心和分支机构以及多个 Amazon 区域中的多个 VPC 的广域网(WAN)。 亚马逊云科技开发者社区为开发者们提供全球的…...
FPGA_学习_13_方差计算小模块
测距器件APD的性能与器件本身的温度、施加在APD的偏置电压息息相关。 在不同的温度下,APD的偏压对测距性能的影响非常大。 要确定一个合适的APD的偏压Vopt,首先你要知道当前温度下,APD的击穿电压Vbr,一般来讲,Vopt Vb…...
如何安装多个版本的python,python可以装两个版本吗
这篇文章主要介绍了可不可以在同一台计算机上安装多个python版本,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 1、不同版本的python不能安装到同一台计算机上 可以的&#…...
深入理解JVM:Java使用new创建对象的流程
1、创建对象的几种方式 ①new 对象 ②反射 ③对象的复制 ④反序列化 2、创建对象流程 先看看常量池里面有没有,如果有,就用常量池的看这个类有没有被加载过,如果没有,就执行类加载以及类的初始化。(对象的大小&#…...
【MySQL】索引与B+树
【MySQL】索引与B树 索引概念前导硬件软件方面 索引的理解单个page多个page引入B树B树的特征为什么B树做索引优于其他数据结构?聚簇索引与非聚簇索引辅助索引 索引的创建主键索引的创建和查看唯一键索引的创建和查看普通索引的创建和查看复合索引全文索引索引的其他…...
“使用Spring Boot快速构建Java Web应用“
标题:使用Spring Boot快速构建Java Web应用 摘要:本文介绍了如何使用Spring Boot快速构建Java Web应用。通过Spring Boot的自动配置和约定优于配置的特性,开发人员可以轻松地搭建一个简单且高效的Web应用。本文将通过一个示例代码详细演示Sp…...
面试题汇总——设计模式
简单介绍 设计模式共有23种,创建型模式5种,结构型模式7种,行为型模式11种 创建型: 关注对象的创建过程,将对象的创建和使用分开,在使用对象时无须知道对象的创建细节。对象实例化的模式,创建型模式用于解耦对象的实例化过程。单例模式、工厂方法模式、抽象工厂模式、建造…...
Java SpringMvc
0目录 java SpringMvc拓展 1.SpringMvc 创建工程,导入依赖 配置 web.xml文件 配置Spring配置文件,resources目录下新建applicationContext.xml 控制层配置 新建list.jsp并测试 Web.xml详解 如果required是true必须要传参 设置默…...
JVM运行时区域——对象创建内存分配过程
新创建的对象,都存放在伊甸园区域,当垃圾回收时,将伊甸园区域的垃圾数据销毁,然后将存活的对象转移到幸存者0区域,之后创建的新的对象还是存放在伊甸园区域,等到再次垃圾回收后,将伊甸园区域和幸…...
Springboot项目排除Bean的方法
前言: 在最近工作中,相关业务代码需要引用一个工具包。原来的同事在工具包中,封装了Spring AOP切面的Bean,但是这样的工具包非常不友好,工具包不应该有这些特殊的处理。有了这些特殊的处理,引用方也要特殊处…...
阿里云国际版云服务器防火墙设置
阿里云国际版云服务器防火墙设置 入侵防御页面为您实时展示云防火墙拦截流量的源IP、目的IP、阻断应用、阻断来源和阻断事件详情等信息。本文介绍了入侵防御页面展示的信息和相关操作,下面和012一起来了解阿里云国际版云服务器防火墙设置: 前提条件 您需…...
科技资讯|苹果开放Vision Pro头显开发套件申请,此前曝光三款电池
苹果今天宣布面向开发人员,正式接受 Vision Pro 头显开发套件申请,从而帮助其开发和测试应用程序。 苹果官方页面介绍,开发人员在获得 Vision Pro 头显开发套件之外,还可以获得设备设置和入门方面的帮助,与 Apple 专…...
Langchain 的 LLMChain
Langchain 的 LLMChain 1. 开始使用运行 LLM 链的其他方式解析输出从字符串初始化 LLMChain 是一个简单的链,它围绕语言模型添加了一些功能。它在整个LangChain中广泛使用,包括在其他链和代理中。 LLMChain 由 PromptTemplate 和语言模型(LL…...
100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针
🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…...
第七章:WILDCAT: 弱监督学习的深度卷积神经网络用于图像分类、点位定位和分割
0.摘要 本文介绍了WILDCAT,一种深度学习方法,它旨在通过对齐图像区域来获得空间不变性和学习强烈局部化特征。我们的模型仅使用全局图像标签进行训练,并致力于三个主要的视觉识别任务:图像分类、弱监督的逐点对象定位和语义分割。…...
Axios-post请求下载文件
场景背景 1.一般来说,都是使用get请求后台接口,如此后台返回文件流于浏览器,则可直接下载。 2.那么除一般情况,就有特殊情况,比如你的请求接口参数特别长,此时便不可使用get请求,get请求的参数…...
视频增强技术-对比度增强
在图像处理中,由于获取的图像质量不好,需要通过对比度增强来提升图片质量,主要解决的是由于图像灰度级范围较小造成的对比度较低的问题,作用是使图像的灰度级范围放大,从而让图像更加清晰。主要对比度增强方法包括线性…...
uni-app点击按钮弹出提示框(以弹窗的形式显示),选择确定和取消
学习目标: 学习目标如下所示: uni-app点击提交按钮后弹出提示框,(以弹窗的形式显示),提示用户是否确认提交(即确定和取消),点击确定后调用真正的提交方法,将数据传给后端…...
linux部署es+kibana
部署kibana与es 3.4.1、拷贝文件 首先把elasticsearch-7.3.1-linux-x86_64.tar.gz 和kibana-7.3.1-linux-x86_64.tar.gz拷贝到linux上,比如我是拷贝/usr/local 目录下 3.4.2、解压文件 然后分别执行tar -zxvf elasticsearch-7.3.1-linux-x86_64.tar.gz和tar -zx…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
WinUI3开发_使用mica效果
简介 Mica(云母)是Windows10/11上的一种现代化效果,是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果,Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...
