《C和指针》(3)数据

问题

  1. 假定你正编写一个程序,它必须运行于两台机器之上。这两台机器的缺省整型长度并不相同,一个是16位,另一个是32位。而这两台机器的长整型长度分别是32位和64位。程序所使用的有些变量的值并不太大,足以保存于任何一台机器的缺省整型变量中,但有些变量的值却较大,必须是32位的整型变量才能容纳它。一种可行的解决方案是用长整型表示所有的值,但在16位机器上,对于那些用16位足以容纳的值而言,时间和空间的浪费不可小视。在32位机器上,也存在时间和空间的浪费问题。
    如果想让这些变量在任何一台机器上的长度都合适的话,你该如何声明它们呢?正确的方法是不应该在任何一台机器中编译程序前对程序进行修改。提示:试试包含一个头文件,里面包含每台机器特定的声明

    :声明整型变量名,使变量的类型必须有一个确定的长度(如int8、int16、int32)。对于你希望成为缺省长度的整数,根据它所能容纳的最大值,使用类似defint8、defint16或defint32这样的名字。然后为每台机器创建一个名为int_sizes.h的文件,它包含一些typedef声明,为你创建的类型名字选择最合适的整型长度口在一台典型的32位机器上,这个文件将包含:
    在这里插入图片描述
    在一台典型的16位整数机器上,这个文件将包含:
    在这里插入图片描述
    注意:虽然说这里也可以使用#define指令,但是最好不要用,例如:

    /*typedef char* d_ptr_to_char */
    #define d_ptr_to_char char*
    dptr_to_char a,b; 
    

    上面两行语句等价于char *a,b;,即正确声明了a,但错误声明了b。如果将宏定义替换为注释代码,那么a和b均可被正确声明。

  2. 假定你有一个程序,它把一个long整型变量赋值给一个short整型变量。当你编译程序时会发生什么情况?当你运行程序时会发生什么情况?你认为其他编译器的结果是否也是如此?

    :许多编译器都会发出警告信息。标准大致是这样定义运行时行为的:如果要分配的值足够小,可以放入较短的变量中,则保留其值;否则,它依赖于实现。措辞谨慎的描述意味着实现可以简单地丢弃不合适的高阶位,这在大多数机器上提供了最有效的目标代码。这显然是不可移植的。

  3. 假定你有一个程序,它把一个double变量赋值给一个float变量。当你编译程序时会发生什么情况?当你运行程序时会发生什么情况?

    :编译它时,您可能会收到一条警告消息。运行时行为的定义方式与整数的定义方式大致相同:如果值适合较小的变量,则它有效;否则它依赖于实现。然而,对于浮点值,只有当其指数大于较短类型所能容纳的值时,值才“不适合”。如果指数合适,尾数仍然存在,尾数可能比较短类型所能保持的意义更大。在这种情况下,该值被替换为最接近的值,该值可以在较短的变量中表示;这取决于实现,是循环、截断还是执行其他操作。

  4. 编写一个枚举声明,用于定义硬币的值。请使用符号PENNY、NICKEL等


    在这里插入图片描述

  5. 下列代码段会打印出什么东西?
    在这里插入图片描述
    :变量jar是一个枚举类型,但它的值实际上是个整数。但是,printf格式代码%s用于打印字符串而不是整数。结果,我们无法判断它的输出会是什么样子。如果格式代码是%也那么输出将会是:

    32
    48
    
  6. 一个无符号变量可不可以比相同长度的有符号变量容纳更大的值?

    :否。任何给定的n个位的值只有2"个不同的组合。一个有符号值和无符号值仅有的区别在于它的一半值是如何解释的.在一个有符号值中,它们是负值。在一个无符号值中,它们是一个更大的正值。

  7. 假如int和float类型都是32位长,你觉得哪种类型所能容纳的值精度更大一些?

    : float的范围比int大,但如果它的位数不比int更多,它并不能比int表示更多不同的值。
    前一个问题的答案已经提示了它们应该能够表示的不同值的数量是相同的,但在绝大多数浮点系统中,这个答案是错误的。零通常有许多种表示形式,而且通过使用不规范的小数形式,其他值也具有多种不同的表示形式。因此,float能够表示的不同值的数量比int少。

  8. 下面是两个代码片段,取自一个函数的起始部分,它们完成任务的方式有何不同?
    在这里插入图片描述
    :没有不同

  9. 如果上一个问题中代码片段的声明中包含有const关键字,它们完成任务的方式又有何不同?

    :左边的声明仍然执行以前的操作,但右边的声明有错误;不能为常量变量赋值

  10. 在一个代码块内部声明的变量可以从该代码块的任何位置根据名字来访问,对还是错?

    :是的,除非嵌套块声明另一个具有相同名称的变量,这会隐藏早期变量并使其无法从嵌套块中访问。

  11. 假定函数a 声明了一个自动整型变量x,你可以在其他函数内访问变量x,只要你使用了下面这样的声明:
    在这里插入图片描述
    对还是错?

    : 错,这些变量永远不能通过名称从其他块访问。

  12. 假定上一个问题中的变量x被声明为static。你的答案会不会有所变化?

    :不,这会更改其存储类,但不会更改其范围;答案仍然是错误的。

  13. 假定文件a.c的开始部分有下面这样的声明
    在这里插入图片描述
    如果你希望从不同的源文件的函数中访问这个变量,需不需要添加额外的声明,如果需要的话,应该添加什么样的声明?

    :添加如下声明
    在这里插入图片描述

  14. 假定上一个问题中的声明包含了关键字static。你的答案会不会有所变化

    :如果声明包含了static,那么其他源文件将不可能访问到该变量。

  15. 假定一个函数包含了一个自动变量,这个函数在同一行中被调用了两次。试问,在函数第2次调用开始时该变量的值和函数第1次调用即将结束时的值有无可能相同?

    :是的,这是可能的,但你不应该指望它。而且,即使不存在其他的函数调用,它们的值
    也很可能不同。在有些架构的机器上,一个硬件中断将把机器的状态信息压到堆栈上,它们将破坏
    这些变量

  16. 当下面的声明出现于某个代码块内部和出现于任何代码块外部时,它们在行为上有何不同?
    在这里插入图片描述
    :内部:变量是自动的,每次调用函数时都会重新初始化,其范围仅限于函数,没有链接。外部:变量是静态的,在程序开始运行之前只初始化一次,它具有文件范围和外部链接

  17. 假定你想在同一个源文件中编写两个函数x和y,需要使用下面的变量:
    在这里插入图片描述
    你应该怎样编写这些变量?应该在什么地方编写?注意:所有初始化必须在声明中完成,而不是通过函数中的任何可执行语句来完成。


    在这里插入图片描述

  18. 确认下面程序中存在的任何错误(你可能想动手编译一下,这样能够踏实一些)口在去除所有错误之后,确定所有标识符的存储类型、作用域和链接属性。每个变量的初始值会是什么?程序中存在许多同名的标识符,它们所代表的是相同的变量还是不同的变量?程序中的每个函数从哪个位置起可以被调用?
    在这里插入图片描述
    在这里插入图片描述


    在这里插入图片描述在这里插入图片描述
    Note a:如果变量在任何其他声明中都没有初始化,那么它的初始值将为零。
    Note b:函数参数的初始值是调用函数时传递的参数。
    Note c:extern关键字不会改变第24行中声明的y的链接

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

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

相关文章

C++中多态的使用和建立条件

一、多态引入 多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 根据代码,引入多态的概念&#xff1…

【计算机毕设选题推荐】图书在线商城SpringBoot+SSM+Vue

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot的图书在线商城 技术栈 SpringBootVueMySQLMaven 文章目录 一、图书在线商城…

[ Windows ] ping IP + Port 测试 ip 和 端口是否通畅

开发过程中经常会黑窗口中手动测试一下计划请求的目标ip和端口是否通畅,测试方式如下: 一、单纯测试ip是否能够 ping 通,这个比较熟悉了,运行 cmd 打开黑窗口 输入如下指令,能够如下提示信息,表示端口是通…

Cloud Studio连接MySQL,Access denied for一系列问题

官方文档有写如何安装Mysql $ apt update $ apt install mysql-server mysql-client -y$ service mysql start mysql -uroot -p123456进入MySQL命令行 问题出在连接数据库这一步,命令行能进去,但是数据库插件和代码都连不上 Access denied for 大概率…

35 机器学习(三):混淆矩阵|朴素贝叶斯|决策树|随机森林

文章目录 分类模型的评估混淆矩阵精确率和召回率 接口介绍其他的补充 朴素贝叶斯基础原理介绍拉普拉斯平滑下面给出应用的例子朴素贝叶斯的思辨 决策树基础使用基本原理信息熵信息增益信息增益率Gini指数 剪枝api介绍 随机森林------集成学习初识基本使用api介绍 分类模型的评估…

音频录制和处理软件 Audio Hijack mac中文版说明

Audio Hijack mac是一款功能强大的音频录制和处理软件,它可以帮助用户从各种来源捕获和处理音频。 首先,Audio Hijack具有灵活的音频捕获功能。它支持从多个来源录制音频,包括麦克风、应用程序、网络流媒体、硬件设备等等。你可以选择捕获整个…

告别传统纸质期刊,电子期刊更环保更快捷

​【新发现】随着科技的发展,电子期刊逐渐取代了传统的纸质期刊,成为人们获取信息的新选择。电子期刊不仅环保,而且快捷方便,但是你知道怎么制作电子期刊吗? 不会制作的可以试试我推荐的这个网站----FLBOOK电子杂志制作…

无代码玩转web UI自动化

可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGo UI自动化平台 RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度…

报错:AttributeError: module ‘tensorflow‘ has no attribute ‘flags‘

改成如下: 报错原因:tensorflow1.x与2.x版本问题不兼容

今日最新版早安问候大全,秋天早上好祝福短句,生活顺心,一切开心

天上最美的是星星,关心朋友的是短信,人间最美的是真情,外表留给人的是印象,内心留给人的是感情,珍惜了今天你就拥有了明天,愿你开怀地笑,温柔地睡!早安朋友! 早晨的阳光…

Leetcode——数组的旋转

189. 轮转数组 class Solution { public:void rotate(vector<int>& nums, int k) {int lennums.size();vector<int> num(len);for(int i0;i<len;i){num[(ik)%len]nums[i];}nums.assign(num.begin(),num.end());} };旋转数组 没看出数学公式gg 正确答案 cl…

AI大模型高速发展,Web3还远吗?

在过去的几年里&#xff0c;人工智能&#xff08;AI&#xff09;和Web3技术都经历了令人瞩目的发展。AI大模型&#xff0c;特别是像GPT-3、GPT-4等这样的巨型语言模型&#xff0c;已经成为AI领域的明星&#xff0c;而Web3则代表了下一代互联网的愿景&#xff0c;具有去中心化和…

最近邻插值的原理及实现

1. 介绍 插值算法一般用来做上采样和下采样,最邻近插值算法,是插值算法中最简单的一种。 最邻近插值:将每个目标像素找到距离它最近的原图像素点,然后将该像素的值直接赋值给目标像素。 优点: 实现简单,计算速度快 缺点:插值结果缺乏连续性,可能会产生锯齿状的边缘,对…

scratch时间游戏 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch时间游戏 一、题目要求 1、准备工作 2、功能实现 二、案例分析

Cocos Creator3.8 项目实战(十)使用 protobuf详细教程

在 Cocos Creator 中使用 protobuf.js 库可以方便地进行协议的序列化和反序列化。 下面是使用 protobuf.js 的详细说明&#xff1a; 一、protobuf环境安装 1、安装 npm protobuf环境安装安装需要使用 npm 命令进行&#xff0c;因此首先需要安装 npm 。 如果你还没安装 npm …

微信一键群发超过200人的方法

在当前社交媒体的大潮中&#xff0c;微信已跻身全球最热门的社交平台之列。对于企业的运营管理来说&#xff0c;微信的管理系统工具发挥着举足轻重的作用。然而&#xff0c;微信自带的群发助手功能最多只能发送消息给200个好友&#xff0c;要是需要发送1000个好友甚至更多&…

《论文阅读28》OGMM

一、论文 研究领域&#xff1a; 点云配准 | 有监督 部分重叠论文&#xff1a;Overlap-guided Gaussian Mixture Models for Point Cloud Registration WACV 2023 二、概述 概率3D点云配准方法在克服噪声、异常值和密度变化方面表现出有竞争力的性能。本文将点云对的配准问题…

10款远程办公软件,助你事半功倍,晋升快如闪电

选择一个易于使用和方便的远程软件&#xff0c;可以提高团队的整体效率&#xff0c;减少加班&#xff0c;使整个团队更受益。互联网行业从产品经理、UI/从UX设计师到技术开发和测试人员&#xff0c;每一个环节都需要密切沟通和跟踪&#xff0c;在远程沟通中及时发现问题&#x…

power point导出pdf保留字体

在 slides 中用到非自带的字体&#xff0c;如 [1]&#xff0c;想导出成 pdf 文件&#xff08;因为导出成图&#xff0c;如 png&#xff0c;放大会蒙&#xff09;&#xff0c;并在别人电脑里也保留字体。除了让别人也装上相应字体&#xff0c;可以&#xff1a; 参考 [2]&#x…

“岗课赛证”融通的物联网综合实训室建设方案

一、概述 随着5G技术的普及应用和产业经济的革新发展,物联网产业所呈现的广阔前景带来了对创新型技术技能人才的迫切需求。高职院校物联网专业建设也因此转变为面向国家战略性新兴产业发展需求。当前,“岗位课程竞赛证书”融通的培育理念,是高职院校物联网人才培养和专业优化的…