首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么put()在C语言的输出上打印一些无用的值

在C语言中,put()函数是用于将一个字符写入到标准输出(屏幕)的函数。当使用put()函数时,在输出的结果中可能会出现一些无用的值,这是由于put()函数的工作原理以及C语言的内存管理机制所导致的。

put()函数的原型如下:

代码语言:txt
复制
int put(int c);

它接受一个整数参数c,代表要输出的字符的ASCII码。在C语言中,字符在内存中实际上是以整数的形式表示的,所以put()函数可以接受一个整数作为字符参数。

当put()函数被调用时,它会将指定的字符写入标准输出。然而,在某些情况下,由于C语言的内存布局和数据对齐等原因,put()函数可能会在输出结果中显示一些无用的值。

这些无用的值通常是存储在字符参数c之前或之后的内存中的其他数据。在C语言中,变量的内存是按照特定的规则进行分配和管理的,如果在调用put()函数时没有正确地初始化或分配内存,那么put()函数可能会读取或输出这些无用的值。

为避免put()函数输出无用的值,我们应该确保在调用put()函数之前,正确地初始化和赋值字符参数c,以及确保在调用put()函数之前,没有其他无关的内存操作干扰输出结果。

总结起来,put()函数在C语言的输出上打印一些无用的值是由于C语言的内存管理机制和put()函数的工作原理所导致的。要避免这种情况发生,需要正确地初始化和赋值字符参数c,以及确保没有其他无关的内存操作干扰输出结果。

(注意:本回答中不提及腾讯云相关产品,如需了解腾讯云相关产品,请访问腾讯云官方网站。)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言指针的值在哪里?在SRAM

我的电脑里面有三种cache,可以看到L1最小,L3最快 大小 量相差很大 这是我自己电脑的实测,最慢的反而是内存,算完是58.49G/s,L1居然到了2K G这个速度,L3是内存的大概3倍多。...RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。...虽然SRAM速度更快,读写时间也更短,但SRAM的成本较高,所以在存储器容量较小的情况下,通常使用SRAM,而对于大容量存储器,则使用SDRAM。...2.可将一些时序关键代码放入 IRAM,以减少从 flash 中加载代码造成的相关损失。...放入该部分的值在启动时不会被初始化,在软件重启后也会保持值不变。

12110

C语言中的函数为什么只能有一个返回值输出?怎么实现多个值输出?

这是典型的C语言中函数模块中的返回值问题,算是常见的语法细节,很多人觉得C语言已经过时了,只能代表着这类人还不算是真正的技术人员,在嵌入式领域C语言依然充当着非常重要的角色,C语言在很多领域还是首选编程语言...具体功能实现,最后是结果的输出,也就是这个题目的返回值,在正常情况下函数的返回值只有一个,但在实际编程中需要用到多个,在设计时候还是归结成一类,如果类型相近可以弄成数组方式,如果类型不太一致直接放在结构体中执行...,如果函数返回值是个指针的话,就能把整个结构体里面的内容返回出来,同样能够达到返回多个数值的作用,这种在平常的编程过程中用的最多,C语言中使用最频繁的关键点就是指针了,但也是很多初学者最不好理解的知识点...数组在C语言中用的也是非常多,数组在一定层面上其实和指针功能差不多,只不过在使用时候不如指针使用的灵活方便。...很多在刚开始学习C语言的初学者,因为项目经验不多,可能喜欢玩一些文字游戏,比如返回多个值的这样的题目,在实际项目中用的时候还是以实用为主,还要根据实际的情况,毕竟在实际项目中怎么去做选择的空间非常大,以稳定和实用为主

7.5K30
  • C语言free释放内存后为什么指针里的值不变?竟然还可以输出?

    今天你家范儿给大家带来一个的东西——关于C语言为什么释放指针后,指向这块内存的指针的值不变问题的编程经验!!行了,咱们话不多少,直接上主食。...诸位,可得细看呦~ 想必大家都知道C语言中动态开辟内存之后,必须要释放内存,来防止内存泄露。也就是malloc之后,必须要free。...正所谓”有借有还,再借不难”, 不少同学会问为什么释放指针后,指向这块内存的指针的值不变呢,我们今天为大家揭秘。...下图可以看到,在VC6编译环境下,观察指针p的指针所指向的内容已经被strcpy后改变。 ?...下一步free函数,我们选择F11单步介入观察,幸运的是在VC6中可以看到源代码,如下图,会进入到DBGHEAP.c文件中,会调用_free_dbg函数,继续F11介入观察代码 ?

    2.7K80

    为什么在招聘网站上看到招聘JAVA的很多,而C语言和C++相对很少?

    这个标准是国内的标准看,如果放在全球的范围内这三种编程语言还依然还是排名前三名,但现在编程语言有个大趋势已经不可逆了,就是集成化编程语言的流行,符合这种特质的java和python,python好像集成度更加高一些...就现在实际情况看C/C++还在发挥极其重要的作用,现在很多客户端软件以及服务器的开发都离不开这两种编程语言,只不过不像java语言这么火热,现在很多底层开发语言的职位薪资也是非常高,而且入门的门槛也非常高...,因为门槛高很多人做不了的导致索性现在很多人就不作为入行的编程语言了,毕竟入行找个更加简单点的工作会更好一些,现在的大学生喜欢做一些简单化的东西,即使现在流行的人工智能底层性能影响的也是这两种编程语言。...从全球范围看很多C/C++在一些核心技术层面使用范围还是非常广泛,特别是一些涉及到核心技术CA认证等等都是这两种语言搞的,所以不要觉得这两种编程语言已经退出历史舞台了,而且国内软件发展这么多年,还有很多核心技术还没能掌握...,很多人花了几万块钱参加培训做了一段时间发现压根不是自己想做的工作,中间选择了放弃,所以不要看别人都去报班了自己也跟着去了,结果弄到最后发现不是自己需要的工作,很多人觉得C语言已经没有市场了,从市场的需求关系看

    1.4K20

    【C语言刷题每日一题】——计算11-12+13-14+15 …… + 199 - 1100 的值,打印出结果

    问题分析 首先该表达式由100项组成,且有规律,表达式为奇数项时为+,表达式为偶数项时为-,可以使用循环来实现 分析表达式的每一个项,发现其都为两个数相除(或分数),被除数固定为1,除数从1到100递增...第一种实现方式——每次判断是奇数项还是偶数项对应不同的计算 解题思路 首先需要创建一个浮点型变量来存储表达式的结果,这里暂且称为sum 使用一个for循环来实现除数的递增,从1到100 进入for循环...,每次使用一条if语句判断是奇数项还是偶数项,作出+或-的计算 代码实现 #include int main() { double sum = 0.0; for (int i =...,这里暂且称为sum 创建一个标记变量flag,初始为1 使用一个for循环来实现除数的递增,从1到100 进入for循环,每次计算表达式时,额外乘以flag变量,乘完之后改变flag的正负号,进入下一轮...,但在计算的数据足够庞大时,第二种方式在效率上会更出色一些,因为它比第一种方式每次都少了一条if判断语句

    11910

    【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一、直接修改 和 间接修改 指针变量 的值 二、在函数中 间接修改 指针变量 的值 三、在函数中 间接修改 外部变量 的原理 一、直接修改 和 间接修改 指针变量 的值 ---- 直接修改 指针变量...p = &a; // 打印一级指针地址 printf("%d\n", p); // 将一级指针的地址赋值给二级指针 p2 = &p; // 间接修改指针的值...return 0; } 执行结果 : 二、在函数中 间接修改 指针变量 的值 ---- 在 函数 中 间接修改 指针变量 的值 , 将 指向一级指针 的 二级指针 变量 , 传递到 函数形参 中 ,...// 将一级指针的地址赋值给二级指针 p2 = &p; // 间接修改指针的值 *p2 = 12345678; // 打印一级指针地址 printf("%d\...n", p); // 在函数中 , 简介修改指针的值 modify_pointer(p2); // 打印一级指针地址 printf("%d\n", p);

    21.4K11

    【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一、验证二维数组内存是线性的 1、打印二维数组 2、以一维数组方式打印二维数组 3、打印二维数组值和地址 二、完整代码示例 一、验证二维数组内存是线性的 ---- 验证二维数组内存是线性的...: 验证方法如下 ; ① 给二维数组赋值 , 然后 打印二维数组的值 ; ② 使用 一维数组 方式打印二维数组 ; ③ 打印出二维数组的 地址值 ; 1、打印二维数组 打印二维数组的值..., 按照顺序打印 , 这个打印顺序正好是数组的排列顺序 ; /** * @brief print_array 打印二维数组的值 * @param array */ void print_array...array as one-dimensional array : 0 : 0 1 : 1 2 : 2 3 : 3 4 : 4 5 : 5 3、打印二维数组值和地址 打印二维数组的元素和地址 , 其地址是连续的...print_array(array); // 使用一维数组的方式打印二维数组的值 print_array2(array); // 打印二维数组的值和地址

    2.5K20

    Linux 之 详谈系统IO文件及内核级缓冲区(看这一篇就够了)

    需要使⽤mode选项,来指明新⽂件的访问 权限 O_APPEND: 追加写 返回值: 成功:新打开的⽂件描述符 失败:-1 open返回值 在认识返回值之前,先来认识⼀下两个概念: 系统调⽤ 和...可以看出,缓冲区就是⼀块内存区,它⽤在输⼊输出设备和CPU之间,⽤来缓存数据。它使得低速的输⼊输出设备和⾼速的CPU能够协调⼯作,避免低速的输⼊输出设备占⽤CPU,解放出CPU,使其能够⾼效率⼯作。...⾏缓冲区:在⾏缓冲情况下,当在输⼊和输出中遇到换⾏符时,标准I/O库函数将会执⾏系统调⽤操作。当所操作的流涉及⼀个终端时(例如标准输⼊和标准输出),使⽤⾏缓冲⽅式。...为什么呢?肯定和fork有关 ⼀般C库函数写⼊⽂件时是全缓冲的,⽽写⼊显⽰器是⾏缓冲。...文件缓冲区的刷新方式有三种, 这些都是语言级别的 而系统缓冲区在linux内核中是什么时候刷新到外设即磁盘中是由操作系统自己决定的.

    5700

    【C语言】“分⽀与循环第一章:开启创新之门,探索无尽可能性的第一篇章“

    前言 C语言是一种结构化的程序设计语言,其中包含三种结构:顺序结构、选择结构和循环结构。要实现分支结构,可以使用if和switch,而实现循环结构则可以使用for、while和do while。...那在C语言中又怎么表示呢?这里就需要 if...else... 语句了: if ( 表达式 ) 语句1 else 语句 例⼦:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。...的值不管是>=18 还是⼩于18,"可以交谈恋爱了"都会打印在屏幕上。...因此,在编写代码时,请注意括号的使用,以提高代码的可读性。 二、switch语句 除了if语句,C语言还可以用switch语句来实现分支结构。...2.3 switch语句中的default 在使⽤switch语句的时候,使⽤比如switch 后表达式中的值⽆法匹 配代码中的case 语句的时候,这时候要不就不做处理,要不就得在 switch

    13010

    tair(四)–命令

    /tairclient –c configserver:port –g groupname –v 说明:按照上述命令连接后,在进行put以及get操作的时候,每次都会打印一些调试的信息。 ....在TAIR>提示符下 get 作用:根据key值获取对应的数据 说明:输出如下帮助信息。...在TAIR>提示符下 stat 作用:输出一些统计信息。 说明:输出一些状态信息,包括DataServer上的不同命名空间的一些统计信息,如get、put的次数,占据空间的大小等。...area: 指定某个命名空间,默认值为0。 在TAIR>提示符下 delall area 作用:移除指定的命名空间的全部内容。 说明:area: 指定的命名空间的值。...-h: 输出上述帮助信息 -V: 输出版本信息 四、parameter_printer 说明:输出一些参数的设置,如key的最大长度,area的最大值等。

    44520

    cincout的性能优化和缓冲区同步问题

    背景导入 大家可以先看一下这段背景知识;后面我会谈谈自己的理解; 1.在C++中,标准输⼊输出流如 cin 和 中,标准输⼊输出函数如 cout 是由C++的标准库提供的;⽽在C语⾔ scanf 和...由于C++是从C 发展⽽来的语⾔,C++标准库的输⼊输出流系统需要与C标准库的输⼊输出系统兼容,以 确保在同⼀程序中能够混合使⽤C和C++的输⼊输出函数。...1.1ios::sync_with_stdio(false) 我们都知道C++是从C语言发展过来的,我们还知道在.cpp文件中是可以同时使用C++和C的IO流的,也就是cin/scanf,cout/printf...;那么我们就最好不要交叉使用了;否则会造成一些不必要的麻烦; 1.3使用场景 竞赛编程:在处理⼤量输⼊输出的竞赛环境中,这种优化⾮常常⻅,因为它可以显著减少I/O操作 的时间。...这里我简单举个例子 默认状态下cin和cout是绑定了的,我使用cout,缓冲区中存有hello world,没有回车,缓冲区不会自动刷新.运行结果会先打印hello world然后在让我们输入x的值

    10310

    【C语言】函数的系统化精讲(一)

    前言 函数的概念: 函数是数学中的概念,可以用来描述线性关系,如一次函数y=kx+b。 在C语言中,函数是一小段代码,用来完成特定任务,可以通过给定的输入参数得到输出结果。...C语言程序由多个小函数组成,可以将复杂的计算任务分解成更小的函数来完成,提高代码的可读性和可维护性。 函数在C语言中具有特殊的书写和调用方式,可以通过函数名和参数列表来调用特定的函数。...所以结果无法确定,可能是任意的值。 ==注:==虽然在add函数中没有明确的返回值,但是在实际运行时,根据编译器和操作系统的不同,程序可能会出现一些不同的行为。...在你的编译器和操作系统下,可能出现了一种情况,即在add函数中,局部变量c的初始值恰好是3,所以在main函数中打印出来的值是3。...printf函数返回的是打印在屏幕上的字符的个数。 上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个 printf的返回值。

    11410

    【C语言】递归详解

    1.前言 这次博客内容是与递归有关,递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?接下来正⽂开始。 2. 递归的定义 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。...4.2 顺序打印一个整数的每一位 输⼊一个整数n,打印这个按照顺序打印整数的每⼀位 输⼊:1234 输出:1 2 3 4 输⼊:521 输出:5 2 1 4.2.1 分析和代码实现 这个题目,放在我们面前...1; else return n*Fact(n-1); } Fact函数是可以产生正确的结果,但是在递归函数调用的过程中涉及一些运行时的开销。...在C语言中每一次函数调用,都要需要为本次函数调用在栈区申请⼀块内存空间来保存函数调用期间的各种局部变量的值,这块空间被称为运行时堆栈,或者函数栈帧。...当n大于2时就要实现前面两个数字,就要相加,然后将a和b都向后挪,也就是将b的值给a,c的值给b,然后再执行a+b,每执行一次n都要减减一下。

    79210

    c语言的单片机delay延时函数详解

    大家好,又见面了,我是你们的朋友全栈君。 c语言及单片机delay延时函数 环境 延时函数 一、是什么 二、为什么 三、用在哪里?...四、怎么做 1、循环延时 2、定时器延时 环境 开发环境:NY-IDE 单片机 :NY8B062D 延时函数 延时函数,作为一种常用函数,在不同的领域有不同的用处。...而在嵌入式以及C语言的编写中,我们常常遇到需要自己来编写延时函数的情况,这种情况之下,了解其原理就显得必要。 一、是什么 简单来说,延时函数的目的就在于等,实际上就是要等一段时间再来执行接下来的代码。...例如: 名称 描述 循环 采用for或者while循环,让计算机跑无用的代码,从而达到延时的目的 定时器 通过定时器的计时功能,来达到延时的目的 系统调用 该功能其实还是通过以上的两种方式来实现,当时这种功能出现在有系统的程序里面...,执行系统延时的情况下,单片机可以去执行别的函数,直到系统时间到,从而回来接着执行该代码,这实际上也提高了效率 二、为什么 为什么要延时?

    11.2K12

    【C语言】分支语句详解

    if语句练习 输⼊⼀个⼈的年龄 如果年龄打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45岁⾄59岁打印"中⽼年" 如果年龄在60岁⾄89岁打印"⽼年" 如果90岁及以上打印...要注意的一点是:C语言中0是假,非0为真,这里只是用1表示真,并不表示真就是1 注意事项: (1)不要把相等操作符==写成了赋值操作符=,容易出现逻辑错误,比如if( n = 3),原本想判断n...<=30,在后面的逻辑操作符会详细讲到 三、条件操作符 条件操作符属于三目操作符,也是C语言唯一一个三目操作符,需要用三个操作数,大致用法是: 条件 ?...从该例子可以看出,一些简单的条件判断就可以使用条件操作符,会比if语句简单一些 条件操作符练习 使⽤条件表达式实现找两个数中较⼤值 答案在本文最后 四、逻辑操作符 逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式...输⼊1~5,输出的是“⼯作⽇” 输⼊6~7,输出“休息⽇” 如果输入其他数字,那么打印输入错误 如何简便地将要求完成 答案在本文末尾 六、答案 if语句练习答案: 条件操作符练习答案:

    7110

    C语言分支与循环基础知识详解

    前言 C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。...同时,由于c语言中0表示假,非0表示真,所以这个表达式也可以是一个整形值。...你可以根据下面这个题目,分别利用基本语句和多分支结构尝试解决,感受多分支结构在处理问题上的简洁性: 输⼊⼀个⼈的年龄 如果年龄打印"少年" 如果年龄在18岁⾄44岁打印"⻘年" 如果年龄在45...当然,这一规则的前提是没有大括号。 在c语言中,语句的缩进与对齐不会像python中那样影响语句的进行。 如果你希望上面的代码可以打印出haha,你可以尝试加一个大括号。 2....C语言中,0表示假,所有非零值表示真。比如,20>12返回1,12>20 返回0。关系表达式常用于 if 或 while 结构。

    9910

    C语言基础

    下面有一个简单的C语言程序:在屏幕上输出This is a C porgram....如: \x40 表⽰字符@ 接下来我们用实例来进行验证一些转义字符 可以看出前面的转义字符都输出了相应的字符 当打印\120时先进行进制转换:120(八进制)——>80(十进制),再以80为ASCII...值输出对应的字符‘P',同理,打印\x40时,40(十六进制)——>64(十进制),输出字符’@‘ 6.常量和变量 计算机语言中有常量和变量这两种数据表现形式。...该占位符本⾝不输出,只将值存储在指定变量之中。 • %o :⼋进制整数。 • %p :指针(⽤来打印地址)。 • %s :字符串。...关系表达式的值是一个逻辑值,即“真”或者“假”,在C语言的逻辑计算结果中,输出时以1表示真,以0表示假。

    7500

    【c语言】知识记录——分支和循环(含随机数知识点)

    二 .循环语句 (1)while语句 基本语法: while(表达式) { }; 练习题:输⼊⼀个正的整数,逆序打印这个整数的每⼀位  例如: 输⼊:1234,输出:4 3 2 1            ...printf("这句话就不会被打印出来\n"); here: printf("直接跳过上面的那个,打印现在这句话\n"); return 0; } 注意:      goto 语句如果使⽤的不当...,要三个语法结构,好麻烦~ 呐,我们慢慢推一遍为什么———— 首先,我们直接运行rand的结果 这个看似随机的值多运行几次,会发现结果都一样   ——有点问题啊小兄弟 如果再深⼊了解...斯,真讨厌 该死的 于是c语言又提供了⼀个函数叫 srand,用来初始化随机数的生成器的 srand的原型如下: void srand (unsigned int time); //哇哦这里提前出现了time...注意:srand函数是不需要频繁调用的,一次运行的程序中调用一次就够了。 随机数实战运用 见我的作品“【c语言】一些刷题遇到的小知识点—1 ”

    10710
    领券