C语言类型与强制类型转换

news/2024/9/19 23:02:02/文章来源:https://www.cnblogs.com/DSCL-ing/p/18414572

目录
  • 类型
  • 关键字sizeof
  • 如何理解强制类型转化
      • 不同类型的0
  • null
  • 字符设备
      • (补充) char有有符号和无符号两种类型,字符是无符号类型.
    • (补充) getchar的返回值为什么是int
      • 键盘输入的内容,以及往显示器中打印的内容,都是字符 --> 键盘/显示器称为字符设备

类型

  • C语言为何有类型? 让我们能够对内存进行合理化划分,按需索取,存在类型的目的就是让我们能合理使用内存空间
  • 类型为什么有这么多种? 实际应用场景很多种,应用场景不同,解决对应的应用场景的计算方式不同,需要空间的大小也是不同的.多种类型目的是让我们能以最下成本解决多样化的场景问题.

例如: 登记成绩,成绩只要0-100分,那使用一1个字节int8_t/char就足够. 如果带浮点,则需要浮点型.

关键字sizeof

sizeof是函数还是关键字?

  1. 证明1:
int a = 10;
printf("%d\n",sizeof(a));    //正确用法
printf("%d\n",sizeof(int));  //正确用法
printf("%d\n",sizeof a );    //正确用法,证明sizeof不是函数
printf("%d\n",sizeof int );  //不存在
  1. 证明2:函数调用栈帧中sizeof不会压栈

函数执行会建立栈帧,sizeof不会; 具体见函数栈帧篇

如何理解强制类型转化

强制类型转化:不改变数据本身,只改变数据的类型

  • "123456" -> int:123456
字符串"123456"如何转化成整型值123456,能强转吗? 答案是不能,只能通过算法进行转化因为"123456"的空间至少占了7个,而整型int只占4个字节.
  • 不同类型的0
printf("%d\n",0);
printf("%d\n",'\0');
printf("%d\n",NULL); //(void*)0

不同类型的0

字符设备

(补充) char有有符号和无符号两种类型,字符是无符号类型.

(补充) getchar的返回值为什么是int

如果getchar返回值是char,因为char只能表示0-255个字符,刚好包含所有ascii码,如果getchar失败,则没有多余的位置返回错误信息.因此getchar返回值设计成int,int既能转化成字符,还有多余的数值当作错误码来使用.

键盘输入的内容,以及往显示器中打印的内容,都是字符 --> 键盘/显示器称为字符设备

验证:printf scanf的返回值是输出和输入的字符数.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFilterAttribute

ActionFilterAttribute 是一种作用于控制器 Action 方法的特性(Attribute),通过它,你可以在操作执行前后、异常处理时等不同的阶段插入自定义逻辑。 比如在执行操作方法之前修改请求参数、记录日志、进行权限验证等操作,在执行操作方法之后发送邮件、同步数据等等。 本文主…

访问Github卡顿甚至进不去的解决办法(适用于Windows)

本文使用Watt Tookit(原Steam++)解决了Github在国内访问速度卡顿甚至无反应的问题,通过NDM和镜像网站实现Github大文件高速下载。本文首发自个人博客:点我查看 一、前言 Github 是全球知名的开源宝库,但是对国内用户并不友好。当我们在浏览器中输入www.github.com时,如果…

看看mysql干的恶心事

如图: 本文来自博客园,作者:河北大学-徐小波,转载请注明原文链接:https://www.cnblogs.com/xuxiaobo/p/18421514

LoRaWAN网关价格干穿地板了

曾经LoRaWAN网关要上万块钱一台,后来卷到千把块钱,现在可以卷到500以内,还支持4G/ETH/WIFI,应该也是没谁了。 先上图片1.1 产品特点 ◆ 高性能嵌入式硬件平台 ◆ 使用工业级 Cat.1 4G 模块 ◆ 宽压输入 DC 9~28V,工业级稳定性 ◆ 群脉冲:电源2kV,通讯线4kV ◆ 湿度范围…

认知神经科学分析指标——图论指标之全局集群系数

图论指标在认知神经科学或脑科学的研究中,通常作为研究脑网络表现的描述性指标之一,而图论指标从全局性来分可以分为:节点指标和全局指标,而根据描述脑网络整合性表现又可分为:整合指标和分离指标。 该随笔主要涉及图论指标中全局指标及整合指标的全局集群系数,英文全称为…

day4[大模型全链路开源开放体系学习小结]

书生浦语大模型全链路开源开放体系涵盖数据收集、标注、训练、微调、评测、部署等全链路,学习了解其技术发展、性能提升、模型架构、开源生态等。 书生浦语大模型(英文名IN Turn LLM)多次开源,性能不断提升,达到国际先进水平,在推理能力、上下文记忆、自主规划等方面表现…

深入理解ConcurrentHashMap

HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作,调用了HashMap的putVal(),具体原因:假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的;当线程A执行完第六行由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处插入了元…

成都仪器定制-二进制补码及与原码的互相转换方法

大沙把一些基础的知识说清楚,本文介绍二进制补码及与原码的转换方法。 先说原码,原码‌是一种计算机中对数字的二进制定点表示方法。在原码表示法中,数值前面增加了一位符号位,最高位为符号位,0表示正数,1表示负数。其余位表示数值的大小。二进制补码‌是一种用于表示有符…

函数进阶应用3

认识OFFSET函数函数格式 参数说明 作用OFFSET(参数1,参数2,参数3,参数4,参数5) 参数1:以谁为标准参数2:下一多少行参数3:右移多少列参数4:取几行参数5:取几列 动态获取数据应用:使用offset函数获取表格最后五行数据,并计算平均值 在空白单元格输入“=offset()”,然…

程序员编写技术文章需要的四个辅助神器 ,强烈建议收藏 !

编写技术文章是程序员分享经验和记录学习成果的重要方式。 为了让写作变得更轻松,有许多实用工具可以帮助提升效率,比如 Markdown 编辑器、画图工具等。 接下来,笔者将介绍四款简单实用的工具,帮助程序员更轻松地编写技术文章。1 Typora :Markdown 编辑器 Typora 是一款简…

【专题】2024年9月游戏行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p=37732 在当今数字化高速发展的时代,游戏行业已然成为了文化与科技融合的前沿阵地。中国游戏行业凭借着不断创新的技术、丰富多元的内容以及日益拓展的市场,正以蓬勃之姿在全球舞台上绽放光彩。阅读原文,获取专题报告合集全文,解锁文末153份…

山东旅游攻略

目录山东概览地形图威海刘公岛 山东概览 地形图威海 刘公岛 最主要看中日甲午战争的遗址 参考视频 https://www.youtube.com/watch?v=55vH8J2s3Ow