C语言—每日选择题—Day65

前言

        我们的刷题专栏又又又开始了,本专栏总结了作者做题过程中的好题和易错题。每道题都会有相应解析和配图,一方面可以使作者加深理解,一方面可以给大家提供思路,希望大家多多支持哦~

第一题

1、如下代码输出的是什么( )

char a = 101;
int sum = 200;
a += 27;sum += a;
printf("%d\n",sum);

A: 327

B: 99

C: 328

D: 72

答案与解析 D

本题考察的是:类型不同时的运算,会发生整型提升或截断,且二进制计算都是用补码

负数补码 = 源码取反 + 1

在a += 27 时:a为char类型,char类型为1字节 = 8bit

而 a += 27; a = a + 27;

在右侧,一个char类型与int类型相加,会发生char整型提升( 1字节-> 4字节 )

a = 128;而在赋值表达式中,左侧为char类型,右侧为int类型,会发生整型截断

128 =  00000000 00000000 00000000 10000000

所以截断之后为 10000000

而a为char类型,有符号的类型,那最高位就代表符号位 ,最高位为1,是负数

在sum += a中:sum = sum + a;

a = 1000 0000 ,因为是负数,需要转换为补码:1000 0000

在右侧,sum + a,为int和char的相加,char会发生整型提升,负数高位补1

sum :       0000 0000 0000 0000 0000 0000 1100 1000

a :            1111  1111  1111  1111  1111 1111  1000 0000

sum + a :  1 0000 0000 0000 0000 0000 0000 0100 1000

由于超出的32位会舍去最高位:0000 0000 0000 0000 0000 0000 0100 1000 = 72

 第二题

2、对于下面代码执行后输出的是什么( )

int value = 1024;
char condition = *((char*)(&value));
if(condition) value += 1; 
condition = *((char*)(&value)
if(condition) value += 1; 
condition = *((char*)(&value)
printf("%d %d", value, condition);

A: 1026 1

B: 1025 0

C: 1025 1

D: 1024 0

答案与解析

这里考察的就是大家对指针类型的解引用具体可以访问多少字节的理解,还涉及了大小端

相关博客:详谈【指针解引用】与【指针加整数】_指针解引用之后-CSDN博客

无论是大端字节序还是小端,取出来的都是0,结果都一样

第三题(易错)

3. 假设在32位机器上,读代码选结果( )

void func(char para[100])
{void *p = malloc(100);printf("%d, %d\n", sizeof(para), sizeof(p));
}

A: 4,4

B: 100,4

C: 4,100

D: 100,100

答案与解析 A

记住sizeof就是对括号里面变量的类型求大小

而数组在函数传参的时候会降低为指针类型,char* para,所以sizeof(para) = 4;

因为p的类型为void*,所以sizeof(p) = 4,

第四题

4、以下程序执行后的输出结果为( )

#include <stdio.h>
void func(char *p) 
{ p = p + 1; 
}int main()
{char s[] = {'1', '2', '3', '4'};func(s);printf("%c", *s);return 0;
}

A: 2

B: 编译错误

C: 1

D: 无法确定

答案与解析 C

形参的改变不会影响实参,所以s依旧是代表的首元素地址,*s = 1

最重要的一点:

数组名的类型是char* const ,数组名代表首元素地址,不可被改变,是const pointer

第五题

5、已知数组D的定义是 int D[4][8]; 现在需要把这个数组作为实参传递给一个函数进行处理。下列可以作为对应的形参变量说明的是【多选】( )

A: int D[4][ ]

B: int *s[8]

C: int(*s)[8] 

D: int D[ ][8]

答案与解析 CD

A、D:他们是想通过二维数组来传参,但是作为二维数组传参,必须把列的数字标出来,否则错误,所以A错误,D正确

在数组D的传参,传的是数组名D,而数组名为首元素地址,二维数组的数组名是整个第一行的地址,所以类型为int (*)[8],B与C,只有C的类型匹配,所以C正确

相关博客:C语言:指针详解【图解 + 练习】-CSDN博客

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

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

相关文章

深入理解LRU缓存算法:原理、应用与优化

LRU算法&#xff08;Least Recently Used&#xff0c;最近最少使用算法&#xff09;的思想是基于"时间局部性"原理&#xff0c;即在一段时间内&#xff0c;被访问过的数据在未来仍然会被频繁访问的概率较高。 LRU 原理 LRU算法的主要思想是将最近被使用的数据保留在…

UEditor编辑器自动将div标签转换成p标签应该如何解决 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4

首先在ueditor的文件夹下找到ueditor.all.js文件&#xff0c;然后搜索allowDivTransToP找到这段代码&#xff0c;把后面的true设置为false 接着在ueditor.config.js文件内搜索allowDivTransToP找到如下的代码&#xff0c;将注释去掉并且改为false //默认过滤规则相关配置项目/…

ref和out的区别

区别 ref 需要初始化&#xff0c; out可以不用初始化 相同 都可以声明引用 ref static void Func(ref int value){value 9;}static void Main(string[] args){Func(1);int num1 8;Func(ref num); } out static void Func(out int value) {value 9; } static void M…

MPT - 原理及应用

前文回顾 Merkle原理及应用Merkle代码实现Patricia原理及应用Patricia代码实现 什么是MPT&#xff08;Merkle Patricia Tree&#xff09;树 MPT树是一种数据结构&#xff0c;用于在以太坊区块链中高效地存储和检索账户状态、交易历史和其他重要数据。MPT树的设计旨在结合Merk…

sqlmap(四)案例

一、注入DB2 http://124.70.71.251:49431/new_list.php?id1 这是墨者学院里的靶机&#xff0c;地址&#xff1a;https://www.mozhe.cn/ 1.1 测试数据库类型 python sqlmap.py -u "http://124.70.71.251:49431/new_list.php?id1" 1.2 测试用户权限类型 查询选…

java的flatMap和map的区别

在Java中&#xff0c;flatMap是Stream API的一个中间操作&#xff0c;它可以将一个流中的每个元素转换成另一个流&#xff0c;然后将所有新生成的流连接成一个单一的流。这个操作通常用于处理嵌套的集合结构&#xff0c;比如List<List<T>>或类似的复杂结构&#xf…

常见深度学习之十二大激活函数【函数定义、性质、数学公式、代码实现】

目录 前言 1、激活函数的定义与作用 2、激活函数的性质 二、常见的激活函数 2.1 Sigmoid函数&#xff1a; 1. 作用 2. 优点 3. 缺点 4. 数学公式 5.Sigmoid函数实现及可视化图像 2.2 Tanh函数 1. 函数定义 2.优点 3.缺点 4.Tanh函数实现及可视化图像 2.3ReLU 函数 &#xff1a;…

物联网实战--驱动篇之(二)Modbus协议

目录 一、modbus简介 二、功能码01、02 三、modbus解析 四、功能码03、04 五、功能码05 六、功能码06 七、功能码16 一、modbus简介 我们在网上查阅modbus的资料发现很多很杂&#xff0c;modbus-RTU ASCII TCP等等&#xff0c;还有跟PLC结合的&#xff0c;地址还分1开…

C语言进阶课程学习记录-第29课 - 指针和数组分析(下)

C语言进阶课程学习记录-第29课 - 指针和数组分析&#xff08;下&#xff09; 数组名与指针实验-数组形式转换实验-数组名与指针的差异实验-转化后数组名加一的比较实验-数组名作为函数形参小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课…

一篇SCP小故事

你有什么毛病&#xff1f;&#xff08;What is wrong with you?&#xff09;: --------------------------------------------------------------------------------------------------------------------------------- 我工作的时候把灯都关掉是有原因的。这个世界有无限的…

【JavaWeb】Day39.MySQL概述——数据库设计-DQL(二)

数据库设计-DQL 聚合函数 聚合函数查询就是纵向查询&#xff0c;它是对一列的值进行计算&#xff0c;然后返回一个结果值。&#xff08;将一列数据作为一个整体&#xff0c;进行纵向计算&#xff09; 语法&#xff1a; select 聚合函数(字段列表) from 表名 ; 注意 : 聚合…

软件设计—接口安全设计规范

1.token授权机制 2.https传输加密 3.接口调用防滥用 4.日志审计里监控 5.开发测试环境隔离&#xff0c;脱敏处理 6.数据库运维监控审计 软件项目相关全套精华资料包获取方式①&#xff1a;点我获取 获取方式②&#xff1a;本文末个人名片直接获取。

每日三道面试题之 Java并发编程 (四)

1.什么是线程死锁 线程死锁是并发编程中一个常见问题&#xff0c;它发生在两个或多个线程永久性地阻塞彼此&#xff0c;等待对方释放锁&#xff0c;但没有任何一方先行释放锁的情况下。简单来说&#xff0c;每个线程都持有对方需要的资源而等待对方释放资源&#xff0c;导致所…

高校人事管理系统业务分析

目标用户 大学人事部门&#xff0c;部门、院系、任务 解决问题 人事部门按业务划分了很多科室、数据分散、工作流程杂乱、工作效率低。 主要功能模块 人事综合管理平台、个人自助服务平台、人才招聘管理系统、薪酬管理子系统、职称评审子系统、绩效考核子系统组成。

泛零售行业大会员经营的业务挑战与应对策略

​泛零售企业发展到成规模阶段一定会沉淀大量会员&#xff0c;在当前的市场竞争下&#xff0c;企业的经营重点在关注增量市场的同时&#xff0c;也会聚焦对存量会员的价值深挖&#xff0c;提升会员忠诚度&#xff0c;实现“以客户体验为中心、以数据驱动运营”。 对于多业态、…

R语言处理DNA等位基因不平衡(一)

在生物信息学和基因组学研究中&#xff0c;等位基因不平衡分析是一种重要的方法&#xff0c;用于识别在特定生物过程或疾病状态中可能受到选择压力的基因或基因区域。等位基因不平衡&#xff08;Allele Imbalance&#xff09;指的是基因座上两个等位基因表达或存在的比例不等&a…

小程序打开空白的问题处理

小程序打开是空白的&#xff0c;如下&#xff1a; 这个问题都是请求域名的问题&#xff1a; 一、检查服务器域名配置了 https没有&#xff0c;如果没有&#xff0c;解决办法是申请个ssl证书&#xff0c;具体看这里 https://doc.crmeb.com/mer/mer2/4257 二、完成第一步后&#…

基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】

基于springboot实现墙绘产品展示交易平台系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生&#xff…

RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成&#xff0c;可应用在景区、校园、水利、社区、工地等场…

【小程序】常用方法、知识点汇总1

欢迎来到《小5讲堂》 这是《小程序》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言请求超时Markdown解析逐行显示效果文本变动事件转发…