C语言习题~day30

下面哪个不是预定义符号?( )

A.__FILE__

B.__TIME__

C.__DATE__

D.__MAIN__

前三个是常用宏,分别是:打印所在文件、打印编译时间、打印编译日期。除此之外,还有__LINE__(行号)、__FUNCTION__(函数名)等宏,而__MAIN__并不存在,故选D。

下面哪个不是预处理指令:( )

A.#define

B.#if

C.#undef

D.#end

#define执行查找替换,#if可以区分是否编译,#undef可以反定义,也就是取消#define宏定义的东西,#end并没有这玩意,只有#endif,故选D。

offsetof宏

写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明

#define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName)

StructType是结构体类型名,MemberName是成员名。具体操作方法是:

1、先将0转换为一个结构体类型的指针,相当于某个结构体的首地址是0。此时,每一个成员的偏移量就成了相对0的偏移量,这样就不需要减去首地址了。

2、对该指针用->访问其成员,并取出地址,由于结构体起始地址为0,此时成员偏移量直接相当于对0的偏移量,所以得到的值直接就是对首地址的偏移量。

3、取出该成员的地址,强转成size_t并打印,就求出了这个偏移量。

 

交换奇偶位

写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换

#define SwapIntBit(n) (((n) & 0x55555555) << 1 | ((n) & 0xaaaaaaaa) >> 1)

交换奇偶位,需要先分别拿出奇偶位。既然是宏,分别拿出用循环不是很现实,那就用&这些位的方式来做。奇数位拿出,那就是要&上010101010101……,偶数位拿出,就是要&上101010101010……,对应十六进制分别是555……和aaa……,一般我们默认是32位整数,4位对应一位16进制就是8个5,8个a。通过& 0x55555555的方式拿出奇数位和& 0xaaaaaaa的方式拿出偶数位。奇数位左移一位就到了偶数位上,偶数位右移一位就到了奇数位上,最后两个数字或起来,就完成了交换。

※这个宏只能完成32位以内的整形,要想完成64位的,那就将5和a的数量翻倍即可。

  

设有以下宏定义:

#define N 4

#define Y(n) ((N+2)*n) /*这种定义在编程规范中是严格禁止的*/

则执行语句:z = 2 * (N + Y(5+1));后,z的值为( )

A.出错

B.60

C.48

D.70

 Y(5+1)经过替换后是((N+2)*5+1),其中N是4,所以结果是31,2 * (4 + 31)结果为70,选D。

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

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

相关文章

笔记96:前馈控制 + 航向误差

1. 回顾 对于一个 系统而言&#xff0c;结构可以画作&#xff1a; 如果采用 这样的控制策略&#xff0c;结构可以画作&#xff1a;&#xff08;这就是LQR控制&#xff09; 使用LQR控制器&#xff0c;可以通过公式 和 构建一个完美的负反馈系统&#xff1b; a a 但是有上…

解密智慧校园解决方案:赋能数字化教育的未来

在当今数字化时代&#xff0c;智慧校园解决方案正以惊人的速度改变着教育界的面貌。随着科技的快速发展&#xff0c;数字化教育已经逐渐成为现代教育的核心。智慧校园解决方案作为一个集技术、教育和创新于一体的综合性项目&#xff0c;为学校提供了许多机遇和挑战。本文将揭示…

遇见桂林山水画廊,深层互联自动讲解耳机走进漓江

遇见山水&#xff0c;听懂山水。由深层互联独家打造&#xff0c;桂林漓江山水画廊导览工程&#xff0c;于不久前正式启动&#xff0c;声情并茂的真人语音引导着游客&#xff0c;走进有声有色的山水画卷中。 桂林山水甲天下&#xff0c;得天独厚的自然景观&#xff0c;奇幻瑰丽…

掌握4种常见电脑视频压缩方法,轻松解决空间危机

在现今数字化的时代&#xff0c;视频成为我们生活和工作中不可或缺的一部分。然而&#xff0c;随着高清、超高清视频的普及&#xff0c;视频文件的大小也随之增大&#xff0c;给存储、传输和分享带来了一定的挑战。为了克服这一问题&#xff0c;电脑视频压缩成为一项关键的技术…

SwiftUI获取用户的位置信息(CLLocationManager,CLLocationManagerDelegate)

本篇文章将会介绍一下在SwiftUI中如何通过CorLocation框架获取用户的位置信息&#xff0c;因为获取位置信息属于用户的隐私信息&#xff0c;所以需要在Info.plist文件里面加上访问位置权限的说明。 关于位置信息&#xff0c;可以请求两种级别的许可&#xff1a;always和when i…

视频剪辑去水印软件推荐 视频剪辑去水印方法

不会去水印&#xff0c;很难做好视频剪辑。选对软件、掌握去水印的方法&#xff0c;是每个剪辑师必须经历的过程。真正擅长视频剪辑去水印的软件&#xff0c;一定具备多种去水印功能。剪辑师可以根据素材的具体情况&#xff0c;选择最恰当的去水印方法。有关视频剪辑去水印软件…

JimuReport 积木报表 v1.7.5 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

工具JS:纯前端判断运行环境是公司内网还是公网环境

工具JS&#xff1a;纯前端判断运行环境是公司内网还是公网环境 判断内网方式一般就2种&#xff1a; 后端出接口&#xff0c;判断请求头内ip地址&#xff0c;是否公司内网的ip即可前端项目内处理&#xff0c;利用iframe、script、img等标签支持跨域&#xff08;本文介绍&#…

手机如何开启开发者选项? (小米为例)

目录 问题小米开启开发者选项 待续、更新中 问题 小米开启开发者选项 设置 我的设备 手机全部参数信息 点击 miui版本 10次 提示开启开发者选项 设置中搜索:开发者 进入 开启USB调试和USB安装即可使用计算机hbuilder进行安装软件,进行调试 待续、更新中 1 顿号、: 先使用ctrl…

【日记】遇到了一个很奇怪的大爷(845 字)

正文 花了昨天和今天两天时间&#xff0c;把数据转移完了。这块 2T 的硬盘可以光荣退休了。目前是没什么存储焦虑了。 农发行净开发一些垃圾系统。今天没什么业务&#xff0c;但跟 ActiveX 斗智斗勇了一整天&#xff0c;最后实在搞不过 IE 浏览器。我也懒得管了&#xff0c;又不…

禁用layui树形表格的多选框checkbox

1. 背景 在使用树形表格渲染数据时&#xff0c;需要对数据进行批量操作。相对于选中数据后&#xff0c;再做错误提示。直接把数据的多选框禁用掉更加直观。 2. 实现 DisabledTableCheckBox: () > {// 获取所有行 var tableElem $(".layui-table-fixed-l");var …

Promise请求接口并处理返回结果,使用fetch函数

function request(url) {return new Promise((resolve, reject) > {fetch(url).then(response > {if (response.ok) {return response.json();} else {throw new Error(请求失败);}}).then(data > {resolve(data);}).catch(error > {reject(error);});}); }// 使用…

一脉阳光上市圆梦:销售成本高昂,两大创始人的行贿往事与屡屡被罚

《港湾商业观察》施子夫 2024年6月7日&#xff0c;江西一脉阳光集团股份有限公司&#xff08;以下简称&#xff0c;一脉阳光&#xff09;将正式在港交所主板挂牌上市&#xff08;以下简称&#xff0c;一脉阳光&#xff1b;股票代码02522.HK&#xff09;&#xff0c;公司预计发…

解释单例模式、工厂模式和观察者模式的原理和应用场景

单例模式&#xff08;Singleton Pattern&#xff09; 原理 单例模式确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。这个模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建。这个类提供了一种访…

7.0 android中Service的基础知识

service的定义&#xff1a; Service 是一个在后台执行长时间运行操作而不提供用户界面的组件。 允许在用户没有与应用交互时操作&#xff0c;或者执行一些用户交互之外的操作&#xff0c;如音乐播放、文件上传、文件下载等。 Service的使用不影响用户的交互&#xff0c;且由其…

adb dump当前可见的窗口

1、窗口信息 adb shell dumpsys window windows > w.txt2、dump当前可见的窗口activity windows系统 adb shell dumpsys activity | findStr mFocusmac系统 adb shell dumpsys activity | grep mFocus3、dump当前处于栈顶的activity windows系统 adb shell dumpsys activi…

Vue3【七】setup的语法糖setup简写方法

Vue3【七】setup的语法糖setup简写方法 Vue3【七】setup的语法糖setup简写方法 使用script标签式写法称为setup语法糖 组件名称默认位文件名 export 的内容可以省略 案例截图 案例目录 案例代码 Person.vue <template><div class"person"><h1>我…

这才是计科之 Onix XV6 源码分析(1、XV6-x86的启动)

这才是计科之 Onix & XV6 源码分析&#xff08;1、XV6-x86的启动&#xff09; 前言 Onix是一款相对于XV6来说功能更为健全的单核OS&#xff0c;由于功能更加完善&#xff0c;Onix也更加复杂。代码阅读起来会比较绕。 XV6是一款简单易读的多核操作系统&#xff0c;但其功…

【JMeter接口测试工具】第一节.JMeter简介和安装【入门篇】

文章目录 前言一、JMeter简介 1.1 JMeter基本介绍 1.2 JMeter优缺点二、JMeter安装 2.1 JMeter安装步骤 2.2 JMeter环境配置三、项目介绍 3.1 项目简介 3.2 API接口清单总结 前言 一、JMeter简介 1.1 JMeter基本介绍 JMeter 是 Apache 组织使用…

js模块(module)和导入,导出(import,export)

什么是模块&#xff08;module&#xff09; 一个模块&#xff08;module&#xff09;就是一个文件。一个脚本就是一个模块。就这么简单。 模块可以相互加载&#xff0c;并可以使用特殊的指令 export 和 import 来交换功能&#xff0c;从另一个模块调用一个模块的函数或者变量…