首页
学习
活动
专区
圈层
工具
发布

江哥带你玩转C语言 | 15- 修饰符和预处理指令

只能在本文件中访问的变量 外部变量:可以在其他文件中访问的变量,默认所有全局变量都是外部变量 默认情况下多个同名的全局变量共享一块空间, 这样会导致全局变量污染问题 如果想让某个全局变量只在某个文件中使用..., 并且不和其他文件中同名全局变量共享同一块存储空间, 那么就可以使用static // A文件中的代码 int num; // 和B文件中的num共享 void test(){ printf(...习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。...; return 0; } ---- 带参数的宏定义 C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。...对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参 格式: #define 宏名(形参表) 字符串 // 第1行中定义了一个带有2个参数的宏average, #define average(

1.2K00

Python零基础从入门到精通详细教程3-数据类型

1.1学习变量的目的学习变量有助于我们在程序中存储和操作数据,提高代码的灵活性和可维护性。通过使用变量,我们可以方便地引用和修改数据,使得程序能够动态地响应不同的输入和条件。...用于存储带有小数点的数值,即实数。Python中的浮点数通常是双精度浮点数。...可以使用 bool() 函数将其他类型的值转换为布尔值。以下值在转换为布尔值时为 False:None、False、零 (0、0.0、0j)、空序列(如 ''、()、[])和空映射(如 {})。...Python中的字符串是不可变的,意味着一旦创建,就不能更改字符串中的字符。字符串是Python中用于表示文本的数据类型,可以用单引号、双引号或三引号定义。字符串支持多种操作,如切片、拼接和格式化。...)print("-" * 50)print("+" * 50)print("=" * 50)✅运行结果:5.变量的输入上一篇讲解了变量,但是没有讲解如何在键盘中输入变量,这里宏哥补充一下。

23034
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hive优化器原理与源码解析系列—统计信息UniqueKeys列集合

    如一张维度表DIM_DEPART部门为表、事实表FACT_EMPLOYEEE员工表两者使用DEPART_NO部门编号内关联,就JoinKey部门编号而言,维度表DIM_DEPART为非重复值FK side...强调一点,这里讲到主键侧PK side不是指其主键,是带有主键的那一侧,就JoinKey关联键外键而言,它是重复的,如员工表的外键部门编号就是含有重复值的,所以使用主键侧的选择率和外键的非重复记录数进行估算...从RelNode遍历查找TableScan操作符,目前只支持从Project和Filter操作符中进行查找,HeprelVertex将一个relnode包装为表示整个查询表达式的DAG中的顶点,则就取当前...另,Hive自判断统计信息范围最大值减去最小值加1,小于1.0E-5D也为UniqueKey列,把这些UniqueKey列加载到不可变位图集合并返回。...//EPSILON = 1.0E-5D } if ( isKey ) { // 如果上述判断是唯一键,从上述//列统计位置和投影索引映射关系中,获取投影的唯一键信息,转换为不可变位图,并加入位图集合的集合中

    1.1K20

    ChatGPT Excel 大师

    确定值将影响验证规则的单元格。3. 请教 ChatGPT 帮助您构建复杂数据验证场景的公式和表达式。ChatGPT 提示“我需要根据同一行其他单元格的值限制数据输入。...ChatGPT 提示:“我想在单元格内显示趋势和模式,而不使用单独的图表。如何在 Excel 中创建迷你图来可视化单元格内的数据趋势,并一目了然地获得见解?” 71....使用相对引用录制宏。2. 使用绝对引用录制相同的宏。3. 比较结果并了解引用如何影响录制的操作。ChatGPT 提示“我想创建一个宏,将数据从一个工作表复制并粘贴到另一个工作表。...循环技巧 专业提示利用 ChatGPT 的专业知识探索宏中的高级循环技术,使您能够通过创建循环来自动化重复任务,这些循环可以迭代数据、行、列或工作簿中的其他元素。步骤 1....使用 Excel 的 VBA 函数和方法执行操作,如创建新工作簿、复制或移动工作表、保存文件以及在宏中组织数据。3. 请教 ChatGPT 指导您使用变量、引用和命名约定有效地管理工作簿和工作表。

    1.5K00

    【独家】Rust 1.70.0:详解新版本的亮点与变化

    宏的操作数需要按照严格的顺序进行排序,这在某些情况下可能会导致使用上的不便。在新的版本中,这个规则被放宽,提高了 asm! 宏的灵活性和易用性。 允许宏展开的 format_args 调用使用捕获。..."允许宏展开的 format_args 调用使用捕获" 这个更新的含义是,当 format_args 宏在其宏体中使用变量时,这些变量现在可以是外部作用域中的变量,这就是所谓的 "捕获"。...这意味着 format_args 宏现在可以访问并使用其外部环境中的变量,这在以前可能是不允许的。...这个 PR 对此进行了澄清,并添加了一个只发出行表的选项。此外,还添加了一个只发出行信息指令的选项,这对于一些目标(如 nvptx)是必需的。...line-tables-only: 仅有行表。生成最小量的调试信息,用于带有文件名/行号信息的回溯,但不包括其他任何信息,即没有变量或函数参数信息。

    78230

    使用Google App Script和Google Sheet自动生成数据仪表盘

    我们使用这种方法来跟踪我们的应用程序在Atlassian Marketplace中的表现,这项技术也可以与很多公共API搭配使用,比如: Github Google(借助Google Play或者Chrome...上面的第一点已经在我的队友发布的如何使用Google Sheet制作杀手级的数据仪表盘一文中得到了解决。这周我们专注于利用Google App Script来实现仪表盘数据的自动更新。...步骤2:创建Google App Script从API拉取数据 Google App Script 是一门基于JavaScript的语言,你可以用它来对Google Sheets(以及其他Google套件...我们将根据合约来获取xtract项目中我们所需的三个KPI指标 [contract-sheet.png] 如你所见,如果你想添加第四个指标(如fork数),你只需要在E4单元格中填入相应的字段即可。...MAX函数中的表达式在xtract表中寻找某月第一天和下一个月第一天之间的数据并完成相应的计算。

    7.6K60

    一起长锈:4 默认不可变的变量绑定与引用(从Java与C++转Rust之旅)

    “赋值语句在 Rust 中用来修改已经绑定的变量的值。如果变量是可变的,也就是用 mut 声明的,那就可以对其进行重新赋值。” “比如在我们的代码中的这两行。上面一行就是变量绑定,非常简洁。...变量绑定涉及所有权和范围 不存在 不存在 赋值 存在,用于修改已绑定变量的值。如果使用mut声明,可以重新赋值 默认情况下,变量赋值是可变的。赋值不涉及所有权或范围的概念。...值被复制到预分配的内存中 默认情况下,变量赋值是可变的。需要使用new和delete进行显式内存管理。赋值不涉及所有权或范围的概念。...内存管理与赋值无关 语义 由于所有权,借用和生命周期的概念,更为复杂 更简单,只涉及将值复制到内存中 更简单,只涉及将值复制到内存中 Rust的引用是一种借用数据的方式,分为不可变引用(&T)和可变引用...需要使用特定的并发库和同步机制,以避免竞态条件和其他问题。 Rust中的解引用操作是通过指针或引用访问或修改其指向的内存中的数据。

    41843

    如何在 C# 中以编程的方式将 CSV 转为 Excel XLSX 文件

    在本文中,小编将为大家介绍如何在Java中以编程的方式将【比特币-美元】市场数据CSV文件转化为XLSX 文件。...Documents for Excel API) 处理CSV(重新排列列、创建表格并创建带有趋势线的图表) 返回XLSX(使用GrapeCity Documents for Excel API) 1)...在对话框中为其他配置选择默认值后,单击 “下一步”。 (4)这将创建一个模板 ASP.NET Core WebAPI 项目,其中包含返回天气预报的示例代码。...然后,它创建一个 名为 BTC_Monthly的表 ,其中包含 CSV 数据并自动调整 表中的列。...然后,代码在整个表格范围内添加一个StockVOHLC 类型的工作表 (成交量-开盘-高-低-收盘)新图表,设置图表标题,将系列添加到图表中,将类别轴单位更改为“月”,更新类别轴刻度标签方向和数字格式,

    3.2K10

    使用嵌入式SQL(一)

    嵌入式SQL有两种:一个简单的嵌入式SQL查询只能返回单行中的值。简单嵌入式SQL还可以用于单行插入,更新和删除以及其他SQL操作。基于游标的嵌入式SQL查询可以遍历查询结果集,并从多行中返回值。...直到第一次执行例程,嵌入式SQL代码才会根据SQL表和其他实体进行验证。 因此,可以编译包含嵌入式SQL的持久化类的例程或方法,这些SQL引用在例程编译时不存在的表或其他SQL实体。...当首次使用OPEN命令打开游标时,会执行基于游标的Embedded SQL语句的运行时执行。在执行的这一点上,将生成优化的缓存查询计划,如管理门户中的“ SQL语句”列表中所示。...然后,宏预处理器用此代码(或对包含该代码的标签的调用)替换&sql指令。在Studio中,可以根据需要查看生成的代码,方法是查看为类或例程生成的INT代码(使用“查看”菜单中的“查看其他代码”选项)。...嵌入式SQL和行偏移量嵌入式SQL的存在会影响ObjectScript行偏移量,如下所示:嵌入式SQL在例程中的该点处将INT代码行的总数加(至少)2。

    1.4K10

    【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 )

    C 语言 函数 的 缺省认定 (n) 标题3 4.可变参数 的 定义 和 使用 (1) 简介 (2) 代码示例 ( 定义 使用 可变参数 ) 三. 函数 与 宏 1....:(三目运算符), 逗号 表达式 中每个 运算对象计算后 是顺序点; 3.函数运行前 : 函数调用并且在执行函数体之前, 所有实际参数求值完之后是一个顺序点, 如参数是表达式, 需要将表达式计算出结果...函数 和 宏 的分析 (1) 函数 和 宏 分析 ---- 函数 和 宏 分析 : 1.宏处理 : 宏定义是在预处理阶段直接进行宏替换, 代码直接复制到宏调用的位置, 由于宏在预处理阶段就被处理了,...函数的活动记录 分析 (1) 函数的活动记录 ---- 活动记录概述 : 函数调用时 将 下面一系列的信息 记录在 活动记录中 ; 1.临时变量域 : 存放一些运算的临时变量的值, 如自增运算, 在到顺序点之前的数值是存在临时变量域中的...局部变量指针, 即 指针指向的位置是 栈内存位置, 栈内存在返回时会销毁, 不能再函数运行结束后使用 ; 8.代码量 : 函数的代码量尽量控制在一定数目, 50 ~ 80 行, 符合模块化设计规则;

    1.5K30

    炫酷转换:Java实现Excel转换为图片的方法

    前言 在实际开发过程中,经常会有这样的需求:将Excel表格或特定区域转换为图片,以便在其他软件中使用。而在Java开发中,借助于报表插件可以轻松地将工作表、任意指定区域以及各种形状类型转换为图片。...在Java中将Excel转化为图片 在Java中可以使用ImageSaveOptions类中的方法将工作表、区域或形状导出为图片文件。...ShowRowHeadings Yes Yes No 获取或设置是否在导出的图片文件中显示行标题。...下面小编将为大家介绍如何分别将工作表、区域和形状转化为图片: 1.将工作表转换为图片 在Java中可以使用IWorksheet接口的toImage方法将工作表转换为图片: // 创建workbook...", options); 实现效果如下图所示: 2.将区域转换为图片 在Java中可以使用 IRange 接口的toImage方法将工作表中的特定区域转换为图片: // 创建workbook Workbook

    1K20

    最强肉坦:RUST多线程

    对于宏的解释: 1、它是指Rust中的一系列功能,可以定义声明宏和过程宏。 2、通过关键字macro_rules! 声明宏,我们也可以编写宏并使用到它。...("{}",i); p.x += 1; } 1、通过第2行的打印,我发现0..10代表的是10次,而1..10代表的是9次。所以这个范围应该是[0,10),终止值是闭区间,也即不包含终止值。...这样一来,无论执行多少次,都能保证变量p的x和y坐标的打印永远在最后一行。...("total: {}", p.lock().unwrap().x); } 正如前面分析的, 1、我们在第10行将变量p先用Mutex包装一层,然后在外层再使用Arc智能指针包装一层。...2、第13行,我们在循环体内,子线程外,给变量p克隆出一个pp。 3、第15行,我们使用pp.lock().unwrap()得到Mutex包装的变量值。 4、后面就是对于p0在子线程中的操作。

    1.9K20

    还在担心报表不好做?不用怕,试试这个方法

    前言 在各种业务场景中,我们经常需要生成各种报表,例如学校中的学生成绩表、商业场景中的销售单和发票单、测量检测场景中的检测报告等等。...通过模板简化生成报表逻辑代码 通过第三步的代码可以发现,许多样式,如字体、列宽、行高和颜色等都是相同的,但数据和布局却与业务密切相关,并随着报表而变化。...为了解决上述问题,可以将报表抽象为一个Excel模板,并保留不变的内容,移除可变的内容,如下图所示: 这样小编就可以简化报表样式部分的代码,保留核心代码,如下所示: Data data = CreateData...使用模板语言二次简化代码 为了进一步解决第四步中的问题,我们可以通过模板语言,将报表改造成模板文件,来彻底做到业务解耦。将业务需求留在模板文件中,大大降低了代码维护的成本。...ds的数据源中,将School字段填充至 C1 单元格中。

    20110

    【Rust 易学教程】第 1 天:Rust 基础,基本语法

    Rust 在需要可变数量的参数(不允许函数重载)的情况下使用宏。 宏是“卫生的”,意味着它们不会意外地从它们所使用的范围中捕获标识符。Rust 宏实际上只是部分卫生的。 Rust 是多范式的。...尽管只有29行代码,但这个 C 语言示例中至少有 11 行包含了严重的错误: 赋值=而不是相等比较==(第28行) printf 的多余参数(第23行) 文件描述符泄漏(在第26行之后) 多行 if 中忘记使用大括号...行注释以//开头,块注释以/*…* /。 像if和while这样的关键词的工作原理是一样的。 变量赋值用=完成,比较用==完成。...宏是一种从动态值生成私有字符串的方便方法。它接受与 println!() 相同的格式规范。 你可以通过 &和可选的范围选择从 String 中借用 &str 切片。...对于c++程序员: 你可以将 &str 看作 c++ 中的 const char*,但它总是指向内存中的有效字符串。

    78320

    听GPT 讲Rust源代码--srctools(6)

    full_range:导航目标在代码中的范围,用于在编辑器中进行定位和高亮显示。 focus_range:导航目标的焦点范围,即导航目标内部具体子项的范围。...成员变量: 在此文件中,还定义了一些特质(trait)如T1,这些特质定义了对不同数据结构的操作和转换。...FoldKind枚举包含了多个变量,如Comment、Imports、CodeBlock等,每个变量表示一种折叠类型。通过使用这个枚举,可以根据代码块的不同类型来进行折叠。...下面将详细介绍该文件的功能。 在Rust语言中,宏是一种重要的语言特性,它允许开发者自定义和扩展语言的语法。宏展开是将宏调用在编译时展开为对应的代码的过程。...此外,expand_macro.rs文件中还包含一些其他的宏展开相关的辅助函数,如expand_iter函数用于处理宏展开中迭代器的展开。

    43310

    说实话,Intellij IDEA 自带的 Vim 插件真心不错。。。

    默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting->keymap中查找VIM Emulator即可。...这类命令常用的有: d范围> - 删除一定范围内的文本 c范围> - 删除一定范围内的文本并进入插入模式 y范围> - 将范围内的文本放入0号和"号注册栏 v范围> - 选择范围内的文本 =范围...> - 自动缩进范围内的文本 gU范围> - 将范围内的字符转换为大写 gu范围> - 将范围内的字符转换为小写 >范围> - 将范围中的内容缩进一格 范围> - 将范围中的内容取消缩进一格...(在Vim中,复制内容与录制宏共享同一套寄存器,因此我习惯把字母寄存器留给宏使用) d) 普通模式下小写p把寄存器内容复制到当前位置之后,大写P把寄存器内容复制到当前位置之前。...(结合前面第5点,你也许注意到了,在指定范围时,使用跳转命令将指定一个从光标位置到跳转目标的区域) 12 书签 在普通模式下按 m 即可定义书签,按 ` 则可跳转到某个书签的精确位置

    14.3K42

    c++代码整洁之道

    保持简单和直接原则(KISS, Keep it simple and stupid):保持代码尽可能简单,如果需求需要的话,才在代码中引入灵活的可变点,只添加那些可使整体变得更简单的局部复杂的东西。...这种代码 使用 C++ 的类型转换, 如 static_cast()....类型,如果需要使用大整型可以考虑int64,否则类型的隐式类型转换会带来很多麻烦 如无特殊必要不要使用宏,可以考虑使用const或constexpr替代宏,宏的全局作用域很麻烦,如果非要用在马上要使用时才进行...#define, 使用后要立即 #undef google文档说一定不要用宏来控制条件编译(但是我自己还没有查到不用宏如何控制条件编译,或许就不要搞条件编译) 尽可能用 sizeof(varname...) 代替 sizeof(type).使用 sizeof(varname) 是因为当代码中变量类型改变时会自动更新.

    1.2K10

    linux内核编程_linux内核是什么

    进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程 进程如何在几个状态间切换? 在设备驱动编程中,当请求的资源不能得到满足时会怎样?...在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项。...它在分区表中查找活动分区,当找到一个活动分区时,扫描分区表中的其他分区,以确保它们都不是活动的。当这个过程验证完成之后,就将活动分区的引导记录从这个设备中读入RAM中并执行它。...Linux下的C 编程 Linux中宏定义、变量名、函数名命名习惯是什么?..._x : _y; }) 如何定义可变参数的宏?

    22K31

    . | 多视角预测病毒和哺乳动物宿主的关联

    1 介绍 最近的估计表明,迄今为止人类发现的哺乳动物病毒不到真实存在的1% 。在哺乳动物病毒中,其中一些病毒的宿主范围非常窄,而其他病毒,如狂犬病的宿主范围非常广(理论上狂犬病可以感染任何哺乳动物)。...(3)将已知病毒与其哺乳动物宿主作为训练集,构建拓扑网络呈现病毒如何在其哺乳动物宿主间共享的全局视图,以预测其他的病毒与宿主的可能性关系。...网络视角则是将已知病毒与其哺乳动物宿主联系起来的网络,呈现了这些病毒如何在其哺乳动物宿主之间共享的“全局”视图。 最终的结果通过多数票进行了合并。...图4 结果(哺乳动物) 上图4所示,面板A表示哺乳动物特征对病毒透视模型的可变重要性;面板B表示与每种哺乳动物相关的已知和新病毒的数量,标记的哺乳动物如下:偶蹄目、食肉目、手足目、灵长目、啮齿目和其他目中每一个的前...RNA 病毒的平均宿主范围与DNA 病毒平均宿主范围都有明显增长。表2列出了作者所构建的多视角框架中在巴尔的摩组级别的结果以及病毒的选定家族和传播途径。

    85250

    工具 | ImagePy——UI界面支持开放插件的Python开源图像处理框架

    ImagePy 的表可以用于绘制常见的图表,如柱状图、饼图、直方图和散点图(基于 matplotlib)。该图表带有缩放、移动和其他功能,并可以保存为图像。 ?...宏被保存到 .mc 文件中。将文件拖放到 ImagePy 底部的状态栏中,宏将自动执行。我们还可以将 .mc 文件复制到 ImagePy 文件目录下的菜单的子菜单中。...当启动 ImagePy 时,宏文件将被解析为相应位置的菜单项。通过单击菜单,宏将被执行。 ? 宏记录 Workflow 宏是一系列预定义的命令。通过将一系列固定操作记录到宏中,可以提高工作效率。...如果函数不支持指定的输出,我们还可以返回结果,框架将帮助我们将结果复制到 img 并显示它。 将文件保存为 xxx_plg.py,然后复制到菜单文件夹,重新启动 ImagePy。...还可以从 tps 检索其他信息,例如 tps.rowmsk、tps.colmsk,以获得当前选定表的行和列掩码。

    1.9K20
    领券