#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
////了解EOF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//
//int main()
//{
// int a = 0,b=0,c=0;
// int ret = scanf("%d", &a);//输出后发现 ret=1,意思是它读到的有效数字个数为一个
// int ret2 = scanf("%d%d", &b, &c);//类比↑
// //如果在vs(其他编译器可能按一次就够了)里面按三次ctrl+z+回车(这里打了ret和ret2所以6次) 发现ret=-1
// //而-1是谁?是EOF∴scanf读取失败的时候会返回EOF
// //如果读取正常的话,返回的是读取到的数据的个数
// printf("ret=%d\n", ret);
// printf("ret2=%d\n", ret2);
// printf("a=%d\n",a);
// return 0;
//}
////而EOF到底有什么用呢?多组数的场景可能会用到
//了解关键字 static!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//用法:①修饰局部变量
// ②修饰全局变量
// ③修饰函数
//①局部变量
////void test()
////{
//// int a = 0;
//// a++;
//// printf("%d ", a);
////}//这个程序如果执行起来在屏幕上会打印 十个1
//////局部变量a每次进test这个函数是创建,出这个函数时销毁
//////每次a都创建为0,然后++,为1
//////而你想要的是1 2 3 4 5 6 7 8 9 10
//
//void test()
//{
// static int a = 0;
// a++;
// printf("%d ", a);
//}//这样打出来的就是1 2 3 4 5 6 7 8 9 10 上面void函数↑改进版
//
//// *所以在局部变量中 static的作用是延长局部变量的生命周期,它保留了上一次局部a的值
////局部变量是放在内存的栈区的,它进入作用域创建,出了作用域就释放
////局部变量被static修饰后就被放在内存的静态区了
////而放在静态区的数据创建后,直到程序结束才释放
////因为储存位置的差异,使得执行的效果不一样
////注:局部变量被static修饰是不影响作用域的
//
//int main()
//{
// int i = 0;
// while (i < 10)
// {
// test();
// i++;
// }
// return 0;
//}
//②全局变量
//extern int g_val;
//extern int g_val1;
//int main()
//{
// printf("%d\n", g_val);
// printf("%d\n", g_val1);
// return 0;
//}//在另一个源文件(2022.11.2'')定义的g_val=2022用extern在这里输出是没有问题的
////但用了static的g_val1就不行
////因为全局变量本身是具有外部链接属性的
////在A文件中定义的变量,在B问了中可以通过【链接】使用
////但是如果全局变量被static修饰,这个外部链接属性就改变了
////变成了内部链接属性
//当某个全局变量你想自己独吞的时候可以考虑static
//// *所以在全局变量中,static的作用是将全局变量的外部连接属性变成内部链接属性
////最终使得全局变量的作用域变小
//③修饰函数
////声明外部函数
//extern int Add(int x, int y);
//extern int Average(int x, int y);
////修饰函数
//int main()
//{
// int a = 10;
// int b = 20;
// int c = Add(a, b);
// int d = Average(a, b);
// printf("%d\n", c);
// printf("%d\n", d);
// return 0;
//}//发现函数和全局变量是非常相似的
////同理,函数本身具有外部链接属性的
////被static修饰后,外部连接属性变成了内部链接属性
////使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用
////static限制了被修饰函数的作用域
//// 另外函数是没有生命周期的,这点和全局变量不一样
////想独吞此函数时可以考虑
//‘#define’ 的作用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//// 用来定义常量和宏
//
////定义常量
//
//
////#define M 100
////int main()
////{
//// int a = M;
//// printf("%d\n", M);
//// printf("%d\n", a);
//// return 0;
////}
//
//
//
////定义宏
//
//
////Max(int x, int y)
////{
//// return (x > y ? x : y);
//// //↑的意思是
//// //if(x>y)return x;
//// //else return y;
////}
////我们可以写出一个宏与上面的函数非常相似
//
//#define MAX(x,y) (x>y?x:y)//与函数的区别就是参数不需要给定类型,还有函数体的差异
//// 名字 参数 宏体
////一般来说函数是用来处理比较复杂的内容
////宏一般用来处理比较简单的内容
//#define ADD(x,y) ((x)+(y))
//
//
//int main()
//{
//int a = 10;
//int b = 20;
////int m = Max(a, b);
//int n = MAX(a, b);//宏的作用就是这行代码会被替换为 int n=(a>b?a:b);宏体替换
//int k = ADD(a, b);
////printf("%d\n", m);
//printf("%d\n", n);
//printf("%d\n", k);
//return 0;
//}
相关推荐
单细胞测序数据整合
基于Seurat 联合harmony进行单细胞数据整合分析
解决vs2019中按ctrl + z不能结束无限输入(EOF)的方法.
在写代码时发现vs按ctrl+z居然不可以结束无限输入(EOF),如图: 可以发现,当你第一次按ctrl + z它并没有结束输入,而是提示你再次输入,如果你继续输入 的话就好像ctrl + z没有用一般。然而在devc++中按一次就可以了。 vs中想要解决结束无限输入的办法是,**连续按三次ctrl + z,并且每次^z都要在每行的首列! 如果^z不在首列的话是不行的。不过为什么要连续按三次ctrl+z就不知道了。 ...
Latex小白也能搞定!5分钟教你用Overleaf打造个性化简历(附免费模板)
本文为LaTeX新手提供了一份快速上手指南,教你如何在5分钟内使用Overleaf在线平台和现成模板,轻松打造专业且个性化的简历。文章详细介绍了从选择模板、替换个人信息到进行颜色、图标等个性化调整的完整流程,让你无需深入学习LaTeX语法,即可高效制作出排版精美、脱颖而出的求职简历。
键盘如何键入EOF
其实我们所遇到的绝大多数系统都支持我们键入EOF来模拟文件尾的情况,下面我们就来汇总下各个系统上的EOF键入方式。 在Unix中 可以按下 Ctrl + D 来实现 在Windows中 可以通过Ctrl + Z 和 Enter 注意要在命令行模式 用于Mac的Symantec中使用 Ctrl + D 来实现 Microsoft Visual C++,Borland C++,GNU C++ 识别 ...
S905L3B机顶盒刷Armbian:从安卓Root到eMMC全攻略
在嵌入式开发与轻量级服务器搭建中,ARM架构设备因其低功耗和高性价比备受关注。晶晨S905L3B作为运营商机顶盒的主流芯片,通过刷写Armbian系统可将其改造为ARM小服务器。其原理是利用Amlogic芯片的uboot引导机制,将Linux系统写入eMMC存储,从而脱离原厂安卓限制。这一方案的技术价值在于以极低成本实现Docker容器、下载机、轻量数据库等服务的部署,应用场景涵盖家庭网络广告过滤、智能家居控制、复古游戏机等。本文以CM311-1S为例,详细拆解从安卓9 Root到Armbian写入eMMC
别再死记硬背GNN公式了!用PyTorch Geometric从零实现一个GraphSAGE(附完整代码)
本文通过PyTorch Geometric从零实现GraphSAGE模型,深入解析图神经网络的核心原理与实战应用。文章提供完整代码示例,涵盖环境配置、邻居采样、信息聚合等关键步骤,帮助开发者掌握图表示学习技术,避免陷入公式推导的困境。适合希望将GNN应用于实际项目的中级开发者和学生。
win10,vs2015如何模拟EOF输入
运行环境:VS2015,WIN10(文件结尾为’\0’) 一般模拟eof的输入 在windows平台,是在一个新行的开头输入ctrl + z 在unix环境下,是在一个新行的开始出输入ctrl + D 例子: #include "stdafx.h" #include int main() { int i = 0; char str[100]; for (;
XMC1402调试实战:如何用20元的Jlink-OB搞定SWD连接(附DAVE 4.4.2配置)
本文详细介绍了如何使用成本仅20元的Jlink-OB调试器,成功连接并调试英飞凌XMC1402芯片的完整实战流程。内容涵盖从理解芯片启动模式、使用Memtool完成首次烧录与模式切换,到Jlink-OB驱动安装、连接验证,以及在DAVE 4.4.2中配置调试环境并解决常见问题的全步骤,为个人开发者提供了一套高性价比的SWD调试解决方案。
关于在VS中使用scanf时使用EOF的一个说明
今天在VS中编译c语言时,发现scanf出现了问题。代码如下: #include<stdio.h> int main() { int k = 0; float i, a, b, sum = 0; while (scanf("%f", &i)!=EOF) { a = i; sum += a; k++; } b = sum / k; printf...
eye-in-hand手眼标定系统
上一个博文说了一种手眼标定系统的特殊情况,就是相机随着机械手一起移动的情况。虽然前面简单介绍了一种办法,就是内次拍照时让相机回到之前标定的位置,但是这样处理机器人的工作效率就会大大降低,产生很多重复动作,所以这篇博文就来讲一种更简单的标定方案。 下面是halcon官方给的手眼标定系统的案例代码。 这个例子主要应用于相机固定在机械手末端的手眼系统中,而且标定板相对于机器人也是静止的。 在这...
浪涌抗扰度部分解读
8.3 测试仪器: 8.3.1浪涌发生器(对于连接到对称通信线的接口采用10/700us的组合波发生器;对于其他情况采用1.2/50us(8/20us)组合波发生器,输出极性正负可调、移相范围0-360°可调,最大重复率至少每分钟1次,开路输出电压0.5-4kV,电源线的话有效效输出阻抗为2Ω,通信线的话有效输出阻抗为40Ω) 8.3.2 耦合/去耦网络 8.3.3 参考接地平板 8...
【VS2019快捷键使用教程】Visual Studio 快捷开发操作
Visual Studio 快捷开发操作 · [变量/方法/类] 相关操作 Ctrl + R,Ctrl + R :变量/方法/类[重命名] Alt+F12: :变量/方法/类[查看相关定义(Esc退出)] · 光标移动 Ctrl + ← / → :按单词移动光标 Ctrl + Home / End :移动到文档前端/末尾 Page Up/Down :快速移动到下一页 · 文本选择 Sh...
AutoSAR系列讲解(入门篇)2.1-AppL概述
该章主要是讲解SWC是如何在ECU中分布的
四.初识C语言(4)
初识部分的最后一篇。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
第三天学习
/static修饰函数,函数本身是具有外部链接属性的,被static修饰后,外部链接属性就变成了内部链接属性,使得这个函数只能在自己所在的源文件使用,其他源文件无法使用。//但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,这个全局变量只能在自己所在的源文件使用。//但是,局部变量被static修饰后,这种变量就放在静态区,放在静态区的变量,创建好后,程序结束后才释放。//普通的局部变量放在栈区的,这种变量进入作用域创建,出了作用域销毁。//register只起建议的作用。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
C语言ctype.h深度解析:字符分类、EOF与unsigned char的陷阱
字符分类是文本处理与程序解析中最基础的操作之一,而C语言标准库的ctype.h正是为此提供统一接口的关键头文件。它通过高效查表法将字母、数字、空白等类别集中管理,既避免了手写区间判断的边界遗漏,也为不同locale下的语义切换提供了可能。在实际工程中,从命令行参数校验到词法分析,字符分类函数都扮演着重要角色。然而,ctype.h的接口约定常被忽视:参数必须为EOF或可表示为unsigned char的字符值,返回值语义是非零而非固定1,直接传入带符号char可能导致未定义行为。正确理解这些底层规则,才能避免
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
c语言基础续集
关键字、#define以及指针
学习总结
近日学习总结 1 无分隔符输入一组数 取几个为一组 scanf("%4d%2d%2d", &year, &month, &day); 2 保留两位小数输出 printf("%.2f",a); 3 printf 的返回值为输出字符的个数 printf函数从右至左,先读取参数,然后按照格式显示 printf函数类型为整型,其返回值是整型值。 百度百科: int printf (const char *format, [argument]); 说明printf函数类
C语言中的变量常量及输入输出函数
存储类型> <数据类型> 变量名= 初始值(1)存储类型说明符:用于控制变量的存储位置、生命周期和作用域。auto:局部变量默认关键字(只能用于函数内或块内)static:声明为静态变量(生命周期为整个程序,但是作用域受限)extern:声明为外部变量,全局变量的默认存储类型register:建议编译器将变量存储在寄存器中,以提高访问速度typedef:用于定义类型(2)数据类型说明符:用于定义变量或函数的基本数据类型。int:整数类型(4个字节)
C程序设计基础_文件简介
函数名功能scanfprintfstdin、stdout 格式化 I/Ofscanffprintf文件格式化 I/Ogetcharputcharstdin、stdout 以单个字符 I/Ogetcfgetcputcfputc文件中以单个字符 I/Ogetsputsstdin、stdout 以字符串 I/O;gets丢弃\nputs加\nfgetsfputs文件中以字符串 I/O;fgets读\nfputs不加\nsscanfsprintf字符串中 I/Ofreadfwrite文件的二进制 I/O。
22.10.19学习笔记
学习过程中,认为一些比较重要的知识。
初识c语言(4)
了解
用 JSON 定制你的桌面宠物:DyberPet 桌宠框架实操指南
DyberPet 是基于 PySide6 的开源桌面宠物框架,角色动作、对话分支、状态养成全部靠 JSON 配置完成。本文梳理它的功能构成,并给出从环境搭建到自定义桌宠的完整流程。 ## 一个能真正跑起来的桌面宠物应用 DyberPet 不是 GIF 播放器。它会在桌面上运行一个透明窗口,角色播放各类动作,可以被拖拽、会落地、被点击时做出反应,右键菜单提供喂食、开始任务、切换角色等操作。 主
嵌入式基础day11学习笔记
include是一个预处理指令,预处理这个动作发生在编译之前:#include 的作用是,在预处理时,将文件中的全部文本内容复制粘贴到#include所在的位置# define 名字这种宏定义,是用于条件编译的,配合其它的预处理指令来检测这个宏是否被定义过FUNCTION_, _FILE_, _LINE_#endif当运行时,这三个宏分别能返回所在的函数,所在的文件名和所在的行号。<>和””有什么区别使用尖括号<>,编译器会到标准库路径下查找头文件。
初识C语言入门篇03
eg:int Add(int x,int y) { return x+y; } eg:int arr[10]={0,1,2,3,4,5,6,7,8,9}; eg: 结果为:1,2,3,4,5,100 Ascli码表的0-31字符为不可打印字符 ++:eg: 结果为: 5 6 5 4 6.关系运
C语言复习。
while()括弧后面跟的是测试条件,如果成立程序开始从main运行。 for()括弧后面跟测试条件包括三部分 1:初始化部分,2:控制循环的测试或者条件部分。3:增加部分。 #define 指令可以把符号名(或称符号常量)定义为一个特定的字符串。 static基本的两种作用1.限制变量的作用域。2.设置变量的存储域。 #include main() { long
9789



被折叠的 条评论
为什么被折叠?



