C语言——小细节和小知识5

news2024/12/27 1:30:50

一、某些预处理指令

#ifdef

#else

#endif

这三个预处理指令用于条件编译,#ifdef用于判断某个宏是否被定义过,#endif用于结束#ifdef的作用范围,例如:

#include <stdio.h>

#define MAX 10

int main()
{
#ifdef MAX
	printf("max");
#else
	printf("none");
#endif
	return 0;
}

这段代码是一个简单的C程序,包含了条件编译的指令。它展示了预处理器指令 `#ifdef` 和 `#else` 的使用。在C语言中,预处理器在编译之前运行,处理这些指令。

代码中定义了一个宏 MAX,它的值设置为10。

在 main 函数中:

1. #ifdef MAX 是预处理器指令,用于检查是否定义了宏 MAX。
2. 如果 MAX 被定义了(正如代码中所做的),编译器会包含 #ifdef 和 #endif 之间的代码,程序将打印出 max。
3. 如果 MAX 没有被定义,则编译器会寻找 #else 部分(如果有的话),并包含 #else 和 #endif 之间的代码,程序将打印出 none。

在这个特定的例子中,因为 MAX 在程序的一开始就被定义了,所以预处理器会确保 printf("max"); 这行代码包含在编译过程中,而 printf("none"); 这行代码会被忽略。

因此,当编译并运行这个程序时,控制台将显示 max。

二、求1/1 - 1/2 + 1/3 - 1/4 + ... +1/99 - 1/100

#include <stdio.h>

int main()
{
	int i = 1;
	double sum = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
		{
			sum = sum + 1.0 / i;
		}
		else
		{
			sum = sum - 1.0 / i;
		}
	}
	printf("%lf",sum);
	return 0;
}

这一个版本for循环中有判断语句,效率较低,每一次循环都要进行判断。

#include <stdio.h>

int main()
{
	int i = 1,j = 1;
	double sum = 0;
	for (i = 1; i <= 100; i++)
	{
		sum = sum + j * (1.0 / i);
		j = -j;
	}
	printf("%lf",sum);
	return 0;
}

这样就可以不用判断语句,可以提升效率。

三、求十个数中最大数

#include <stdio.h>

int main()
{
	int num = 0,i = 0,max = 0;
	scanf("%d",&max);//要将输入的第一个输入的数作为默认最大值
	//如果将最大值默认设为0的话,如果后面十个数都是负数,那就是这个预设的0是最大值了,而输入的十个之中没有0,结果就错了
	//将输入的第一个数作为默认最大值是防止全是负数的情况
	for (int i = 0; i < 9; i++)//接着接收后面的九个数字
	{
		scanf("%d",&num);
		if (num > max)//只要有更大的数就把他赋值给max
		{
			max = num;
		}
	}
	printf("%d",max);
	return 0;
}

四、数组的大小

数组在定义时就确定了大小

可以是以下两种:声明大小(初始化和不初始化都行)

int arr[10];
int arr[10] = {1};

这样数组的大小就是10个int型数据的大小。

不声明大小(必须初始化)

int arr[] = {1,2,3,4,5,6,7,8,9,10};

在不声明大小的情况下,数组大小是通过初始化的内容决定的,例如这里的初始化数据是10个,那数组的大小就是10个整型数据的大小。

数组的大小确定后就只能存储这么多数据,如果存储超过数组大小数量的数据,栈就会被破坏。

#include <stdio.h>

int main()
{
	int arr[10] = {0};
	for (int i = 0; i < 20; i++)
	{
		arr[i] = i;
	}
	return 0;
}

五、经典九九乘法表

#include <stdio.h>

int main()
{
	int i = 1, j = 1;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= 9; j++)
		{
			if (i >= j)
			{
				printf("%d*%d=%-2d ",j,i,i * j);
			}
		}
		printf("\n");
	}
	return 0;
}

六、栈区、堆区、静态区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JAVA的无代码动态表单系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下&#xff0c;DevEco Studio模拟器启动失败解决办法。 结论&#xff1a;在BIOS里面将Hyper-V打开&#xff0c;DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件&#xff0c;需要使用export关键字导…

Educational Codeforces Round 160 (Rated for Div. 2)

Educational Codeforces Round 160 (Rated for Div. 2) Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 题意&#xff1a;给定一个由数字字符组成的字符串&#xff0c;且无前导零&#xff0c;将其分割成ab两部分&#xff0c;b不能有前导零&#x…

制造企业可以通过哪些措施改善设备OEE

设备综合效率OEE&#xff08;Overall Equipment Effectiveness&#xff09;是制造企业衡量设备效率的关键指标之一。高效的设备运行对于提高生产效率、降低成本和实现竞争优势至关重要。然而&#xff0c;实现高水平的设备OEE并不是一项简单的任务。本文将介绍一些制造企业可以采…

Linux I/O神器之io_uring

io_uring 是 Linux 于 2019 年加入到内核的一种新型异步 I/O 模型&#xff0c;io_uring 主要为了解决 原生AIO&#xff08;Native AIO&#xff09; 存在的一些不足之处。下面介绍一下原生 AIO 的不足之处&#xff1a; 系统调用开销大&#xff1a;提交 I/O 操作和获取 I/O 操作…

共享中药房新突破:亿发打造专业调度与强兼容性的智慧煎药平台

随着共享中药房、智能煎药中心等中医药信息化业务的蓬勃发展&#xff0c;越来越多的医疗机构开始引入自动化设备&#xff0c;将其应用到实际的生产环节中&#xff0c;以辅助或部分替代传统的人工操作。这种自动化设备需要通过智能配方煎药管理系统作为系统平台来进行对接和集成…

在统信UOS操作系统1060上如何部署DNS服务器?01

原文链接&#xff1a;在统信UOS操作系统1060上如何部署DNS服务器&#xff1f;01 hello&#xff0c;大家好啊&#xff01;今天我要给大家带来的是在统信UOS操作系统1060上部署DNS服务器系列的第一篇文章。在这个系列中&#xff0c;我们将一步步搭建一个完整的DNS服务器环境。而今…

docker小白第六天

docker小白第六天 容器数据卷是什么 首先&#xff0c;容器卷有个坑&#xff1a;容器卷需要加入privilegedtrue&#xff0c;如下图所示&#xff0c;是为了解决permission denied的问题。其中“挂载”的意思是相当于一个硬盘插到主机上。使用该命令。是扩大容器的权限解决挂载目…

FA2016AS (MHz范围晶体单元,内置热敏电阻)

FA2016AS晶振是爱普生推出的一款频率范围为38.4MHz 的石英晶体谐振器&#xff0c;内置热敏电阻&#xff0c;小体积贴片(2.0 1.6 0.65 mm&#xff09;&#xff0c;具有小型超薄、稳定性好、具备优良的耐环境特性及高耐热性强.满足无铅焊接的回流温度曲线要求的特点。该款无源晶…

MongoDB的查询分析explain和hint

本文主要介绍MongoDB的查询分析explain和hint。 目录 MongoDB的查询分析explainhint MongoDB的查询分析 在MongoDB中&#xff0c;"explain"和"hint"是两个用于查询优化和分析的关键指令。 explain 在MongoDB中&#xff0c;explain()是一个用于查询分析的…

【洛谷算法题】P1888-三角函数【入门2分支结构】Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1888-三角函数【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格式&a…

三、W5100S/W5500+RP2040之MicroPython开发<DNS示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 DNS工作过程2.3 优点2.4 应用 3. WIZnet以太网芯片4. DNS解析示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPyt…

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

【C++篇】Vector容器 Vector嵌套容器

文章目录 &#x1f354;简述vector&#x1f384;vector存放内置数据类型⭐创建一个vector容器⭐向容器里面插入数据⭐通过迭代器访问容器里面的数据⭐遍历&#x1f388;第一种遍历方式&#x1f388;第二种遍历方式&#x1f388;第三种遍历方式 &#x1f384;vector存放自定义数…

Java 基础学习(十三)集合框架、List集合

1 集合框架 1.1 Collection 1.1.1 集合框架概述 Java 集合框架是一组实现了常见数据结构&#xff08;如列表、树集和哈希表等&#xff09;的类和接口&#xff0c;用于存储一组数据。 开发者在使用Java的集合类时&#xff0c;不必考虑数据结构和算法的具体实现细节&#xff…

SearchWP WordPress高级网站内容搜索插件

点击阅读SearchWP WordPress高级网站内容搜索插件原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具&#xff0c;可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果&#xff0c;它可以有效地简化他们的搜索过程&#xff0c;促进发…

收集60个AI工具网站,值得收藏

目录 一、聊天AI 二、绘画AI 三、AI提示词 四、图像处理 五、UI设计 六、3D设计 今天小编给大家分享60个AI网站&#xff0c;感兴趣的朋友赶紧收藏吧&#xff01; 一、聊天AI 1.ChatGPT 地表最强AI聊天机器人 网址&#xff1a;https://chat.openai.com 2.Anthropic Ant…

美容美发行业小程序源码:单店多店自由用+完整的代码包+搭建教程

随着移动互联网的普及&#xff0c;越来越多的消费者通过手机APP、小程序等应用进行美容美发预约、在线支付等服务。为了满足市场需求&#xff0c;提高美容美发行业的服务效率&#xff0c;罗峰给大家分享一款美容美发行业小程序源码&#xff0c;提供单店多店自由使用、完整的代码…

概率转移路径搜索算法(Beam search, Viterbi算法,)

每个时刻的状态概率给定&#xff0c;我们希望计算整个路径&#xff08;所有时刻&#xff09;的最大概率状态。 贪心算法&#xff08;Greedy Algorithm&#xff09;动态规划&#xff1a; Beam search&#xff1a;选定当前时刻k个最佳状态。kN时计算复杂度和维特比相同&#xff0…

TCP的拥塞控制_基础知识_四种拥塞控制方法

TCP的拥塞控制 一.拥塞控制的基本概念 在某段时间&#xff0c;若对网络中某一资源的需求超过了该资源所能提供的可用部分&#xff0c;网络性能就要变坏&#xff0c;这种情况就叫作拥塞 。 计算机网络中的链路容量(带宽)、交换节点中的缓存和处理机等都是网络的资源 若出现拥塞…