C语言--每日练习题--Day38

第一题

1. 下列代码的运行结果()

short i = 65537;
int j = i + 1;
printf("i=%d,j=%d\n", i, j);

A:i = 65537,j = 65538

B:i = 1,j = 2

C:i = -1,j = 0

D:i = 1,j = 65538

答案及解析 B

本题考查的是隐式类型转换,涉及到整型提升和截断;

65537的二进制位:0001 0000 0000 0000 0001

所以当65537给一个short类型的,一定会发生整型截断,因为65537是int类型的,4字节,32个比特位;而short是2字节,16个比特位;

所以真正是i得到的二进制数位:0000 0000 0000 0001

也就是i = 1

那么j = i + 1;就是普通加法,因为都是int类型,没有隐式类型转换啦;

所以i = 1,j = 2

第二题

2. 下列程序段运行后x的值是()

int main()
{int a = b = c = 0;int x = 35;if (!a)x--;else if (b);if (c)x = 3;elsex = 4;reutrn 0;
}

A:3

B:4

C:35

D:34

答案及解析 B

本题考查的是if-else语句的认识,我们要知道谁跟谁是一个组的;

首先 if 和 else if 为一组,if(c)和else一组

然后 if 的条件判断0为假,非0为真;

是逻辑反,真变假,假变真

第三题

3. 下面的结构体的sizeof是多少()

struct T
{int iVersion;char cTag;char cAdv;int iUser;char cEnd;
};

A:11

B:12

C:13

D:16

答案及解析 D

又是内存对齐哦,大家要是前面的都做了的话,这样的题就不应该错了哈

相关博客:C/C++内存对齐规则(结构体、联合体、类)-CSDN博客

第四题

4. 下面代码的输出结果是()

    int x = 127;int z = 0;short y = -9;z = x + y;

A:x=0000007FH,y=FFF9H,z=00000076H

B:x=0000007FH,y=FFF9H,z=FFFF0076H

C:x=0000007FH,y=FFF7H,z=FFFF0076H

D:x=0000007FH,y=FFF7H,z=00000076H

答案及解析 D

首先答案是用16进制表示的,十进制数末尾用D表示,二进制末尾用B表示,十六进制数末尾用H表示,八进制末尾用O表示。 例如:101B 表示二进制数

之后我们就开始讲解本题:在转换为16进制之前,先算出他们的十进制

首先x肯定就是127,转换为16进制就是7F

y = -9;y是short类型,-9是int类型,会发生隐式类型的转换,一定要用补码!因为只要有关二进制的计算,都是用补码来的;

int--4字节--32比特位,shotr--2字节--16比特位,1比特位 = 1二进制位 

-9的二进制                      原码:1000....1001

按位取反,符号位不变:反码:1111....0110

加一                                 补码:1111....0111

32位截断为16位

补码:1111 1111 1111 0111

反码:1000 0000 0000 1000

补码:1000 0000 0000 1001

依旧是-9,所以我们会发现只要int类型数字的二进制,在16位之内是1就没事,截断也不影响大小;

y = -9 ,记住,计算机存的是补码,所以转换为16进制的应该是补码,

也就是:1111 1111 1111 0111  --> FFF7

第五题

5. 下面代码运行结果()

int main() 
{int a = 7, b = 8, *p, *q, *r;p = &a;q = &b;r = p;p = q;q = r;printf("%d,%d,%d,%d\n", *p, *q, a, b);
}

A:8,7,8,7

B:7,8,7,8

C:8,7,7,8

D:7,8,8,7

答案及解析 

这个题就是要知道,值可以被保存的

p最开始存a的地址,q最开始存b的地址

r = p,也就是 r 也存a的地址

p = q ,p又指向 q ,存的就是b 的地址;

q = r,q 指向 r ,q 存的就是 a 的地址;

所以现在就是 p存b地址,q存a地址,完成了交换

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

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

相关文章

使用JSON-Server快速搭建RESTful API接口

​​​​​​​ 概要 随着前端技术的快速发展,前后端分离已经成为了一种趋势。在前后端分离的架构中,前端需要与后端进行数据的交互,这就需要后端提供RESTful API接口。而在开发过程中,我们常常需要模拟后端数据接口&#xf…

交友系统:打造独具魅力的社交平台!APP小程序H5三端源码交付,支持二开!

随着社交媒体的兴起,交友系统成为了现代社会不可或缺的一部分。人们希望通过网络结识新朋友,拓展社交圈,寻找志同道合的伙伴,甚至找到自己的爱情。本文将为您介绍交友系统的定义、功能以及如何打造一个独具魅力的社交平台。 一个成…

SQL中的三值逻辑:TRUE、FALSE 和 UNKNOWN。

在SQL中,通常采用三值逻辑处理条件表达式的真值。这种逻辑是基于三种可能的真值状态:TRUE、FALSE 和 UNKNOWN。 TRUE(真): 表示条件为真或成立。 FALSE(假): 表示条件为假或不成立。…

全局代理IP的工作原理和实现方法

目录 前言 一、全局代理IP的工作原理 1.代理服务器 2.代理协议 二、全局代理IP的实现方法 1.构建代理服务器 2.实现数据转发 3.使用代理服务器 4.启动代理服务器 三、全局代理IP的代码实现 四、总结 前言 在网络中,代理服务器是一种获取网络资源的方式。…

万界星空科技电子装配行业MES解决方案

电子电器装配属于劳动密集型、科技含量较高的行业,产品零部件种类繁多,生产组装困难,生产过程存在盲点,同时也决定了生产流水线多且对自动化水平要求较高。 万界星空科技提供的电子行业MES解决方案,提供从仓储管理、生…

源码级详解Spring的三级缓存,循环依赖的处理流程

一.什么是三级缓存 1.一级缓存:存放已经初始化完成的Bean 2.二级缓存:存放半成品Bean,既实例化完成未初始化的Bean。 3.三级缓存:存放bean工厂 二.为什么是三级缓存 一级缓存是必须的,这个我们没有什么疑问。那为…

Flutter的BuildContext简介

文章目录 BuildContext 简介BuildContext的主要作用 BuildContext 简介 BuildContext是Flutter中的一个重要概念,表示当前Widget在树中的位置上下文。它是一个对Widget树的一个位置的引用,用于查找、访问和操作该位置上的相关信息。每个Widget都有一个关…

MSSQL存储过程的功能和用法:解密数据库编程的神秘面纱

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

充分发挥SQL能力之数列

SQL数列 1、数列概述2、SQL数列2.1、简单递增序列2.2、等差数列2.3、等比数列3、SQL数列的应用3.1、连续问题3.2、多维分析1、数列概述 数列是最常见的数据形式之一,实际数据开发场景中遇到的基本都是有限数列。常见的数列例如:简单递增序列、等差数列、等比数列等 如何充分…

图形化编程:开启儿童创新思维的新篇章

随着科技的飞速发展,少儿编程已经成为了当今社会的一项重要技能。越来越多的家长和教育者开始关注如何让孩子从小接触编程,培养他们的创新思维和解决问题的能力。6547网认为图形化编程作为一种简单易学、趣味性强的编程方式,正逐渐成为儿童编…

十年前端之离别的旋律

在一家名叫“梦想家”的小公司里,有一个普通的程序员,他的名字叫做小帅。每天默默地坐在角落里,默默地写着代码,默默地为公司付出。他的眼睛里总是充满了对工作的热爱和对生活的热情,但他的内心却隐藏着一个秘密&#…

立体声数模转换芯片GC4344的性能有哪些?为什么是DVD 播放解码器、数字通信设备等音频设备的理想选择

GC4344 是一款立体声数模转换芯片,内含插值滤波器、multi-bit 数模转换器、输出模 拟滤波器。GC4344 支持大部分的音频数据格式。GC4344 基于一个带线性模拟低通滤波器的四 阶 multi-bitΔΣ调制器,而且本芯片可以通过检测信号频率和主时钟频率&#xff…