C语言辨析——深入理解字符常量与表达式

1. 问题

今天看到一个题目,截图如下。

图片

从答题情况来看,本题的答案是B,那么就意味着A、C、D是错的。但我认为这4个选项都是对的。当然,如果要从4个选项中挑选一个的话,那还是选择B妥当一些。

2. 分析

字符常量的定义:字符常量(Character constant)是由一对单引号括起来的一个字符序列,例如,'a'、'b'、'1'和 '\123' 等都是有效的字符常量。在大部分编译系统中,一个字符占一个字节,并使用ASCII码值表示字符。例如,字符'A'的ASCII码值为65,即用65表示字符'A'。

字符常量可以带有一个前缀,不带前缀的字符常量默认类型为int,这类字符常量称为整数字符常量。如果字符常量的前缀是L,则其类型为wchar_t;如果前缀是u,类型是char16_t C11起);如果前缀为U,类型为char32_t C11起)。wchar_tchar16_tchar32_t等类型的字符常量通称为宽字符常量。如果字符常量的前缀是u8,则其类型为char8_tC23起),该类型与unsigned char相同。

在C标准中进一步对整数字符常量进行解释:对于单个字符的整型字符常量的值映射到文字编码中的单个值(注,在实现中一般采用ASCII码),其值是被映射字符在文字编码中表示为整数的数值。包含多个字符(例如’ab’)的整数字符常量的值,或者包含没有映射到文字编码中的单个值的字符或转义序列的值由实现定义

以上内容均来自C标准。由C标准可知选项A的赋值语句是正确的,只是字符常量‘a+b'转换为int类型数时的值是由实现定义,减弱了程序的可移植性。

对于选项C和D,没有什么可说的,它们两个就是正确的赋值语句,对于C选项,字符常量’7‘和'9',它们的类型都是int,如果字符编码采用ASCII,它们的值分别是0x37和0x39,两者相加结果是0x70,0x70对于的字符是'p',因此,对于C选项,赋值语句执行后ch的值为字符'p'。

对于D选项,5+9等于14,如果字符编码采用ASCII,赋值语句执行后ch的值为14,对应ASCII中的一个控制字符,不可显示。

3. 结论

这道题目的四个选项都对。

参考文献:

[1]李红卫,李秉璋. C程序设计与训练(第四版)[M],大连,大连理工大学出版社,2023.

[2]https://pan.baidu.com/s/17ZXphwqySNIsIgcGtYMjvg?pwd=lhwc

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

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

相关文章

leetcode83. 删除排序链表中的重复元素

Problem: 83. 删除排序链表中的重复元素 文章目录 题目思路1复杂度Code思路2复杂度 题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出&am…

【漏洞复现】优卡特脸爱云一脸通智慧管理平台权限绕过漏洞CVE-2023-6099(1day)

漏洞描述 脸爱云一脸通智慧管理平台1.0.55.0.0.1及其以下版本SystemMng.ashx接口处存在权限绕过漏洞,通过输入00操纵参数operatorRole,导致特权管理不当,未经身份认证的攻击者可以通过此漏洞创建超级管理员账户。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

CAN总线报文格式———扩展数据帧

扩展数据帧由帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束等组成。 一、总线空闲(Bus Idle) CAN总线空闲时,总线上会输出持续的高电平“1”。当总线空闲时任何连接的单元都可以开始发送新的报文。 二、帧起始(Start o…

鱼哥赠书活动第⑤期:《ATTCK视角下的红蓝对抗实战指南》《智能汽车网络安全权威指南》上下册 《构建新型网络形态下的网络空间安全体系》《Kali Linux高级渗透测试》

鱼哥赠书活动第⑤期: 《ATT&CK视角下的红蓝对抗实战指南》1.1介绍: 《智能汽车网络安全权威指南》上册1.1介绍: 《智能汽车网络安全权威指南》下册1.1介绍: 《构建新型网络形态下的网络空间安全体系》1.1介绍: 《K…

遭受慢速连接攻击怎么办?怎么预防

慢速连接攻击是一种常见的网络攻击方式,其原理是利用HTTP协议的特性,在建立了与Http服务器的连接后,尽量长时间保持该连接,不释放,达到对Http服务器的攻击。 慢速连接攻击的危害包括以下几个方面: 1.资源…

推荐一款.NET开发的物联网开源项目

物联网(IoT)是一个正在快速发展的技术领域,它涉及到各种设备、物体和系统的互联。所以各种物联网平台和物联网网关项目层出不穷,在物联网(IoT)领域,.NET平台扮演着重要的角色。作为一款广泛使用…

管理软件供应链中网络安全工具蔓延的三种方法

软件开发组织不断发展,团队成长,项目数量增加。技术堆栈发生变化,技术和管理决策变得更加分散。 在这一演变过程中,该组织的 AppSec 工具组合也在不断增长。在动态组织中,这可能会导致“工具蔓延”。庞大的 AppSec 工…

Colab 谷歌免费的云端Python编程环境初体验

最新在学习AIGC的过程中,发现很多教程,demo使用到了Colab这个谷歌工具。 Colab 是什么? Google Colab是一个强大且免费的云端Python编程环境,为学生、研究人员和开发者提供了一个便捷的平台来开展数据科学、机器学习和深度学习项…

《最新出炉》系列入门篇-Python+Playwright自动化测试-9-页面(page)

1.简介 通过前边的讲解和学习,细心认真地小伙伴或者童鞋们可能发现在Playwright中,没有Element这个概念,只有Page的概念,Page不仅仅指的是某个页面,例如页面间的跳转等,还包含了所有元素、事件的概念&#…

redis夯实之路-主从复制详解

Redis中可以通过执行slaveof命令或者设置slaveof选项,让一个服务器区复制另一个服务器,被复制的为主服务器,复制的为从服务器。 复制 Redis中可以通过执行slaveof命令或者设置slaveof选项,让一个服务器区复制另一个服务器&#…

LLVM系列(1): 在微软Visual Studio下编译LLVM

参考链接: Getting Started with the LLVM System using Microsoft Visual Studio — LLVM 18.0.0git documentation 1.安装visualstudio,版本需要大于vs2019 本机环境已安装visual studio2022,省略 2安装Makefile,版本需要大…

Dockerfile构建镜像(SSH、Systemctl、nginx、tomcat 、mysql、)

目录 构建SSH镜像 构建Systemctl镜像 构建nginx镜像 构建Tomcat镜像 构建MySQL镜像 构建SSH镜像 切换到目录 /opt/sshd: cd /opt/sshd这是为了进入一个特定的目录,后续的操作将在这个目录下进行。 创建一个 Dockerfile 并使用 Vim 编辑它&#xf…

C++力扣题目617--合并二叉树

给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠&#…

什么是损失函数?

损失函数(Loss Function),也被称为代价函数(Cost Function),在机器学习和统计学中是一个非常核心的概念。它是一个衡量模型预测值与真实值之间差异的函数,用于在训练过程中指导模型参数的优化。…

python爬虫04-常见反爬

目录 1、常见反爬 2、User-Agent 2.1 伪装库:fake-useragent 3、Referer参数 4、Cookie参数 4.1 cookie是什么 4.2 cookie的级别 4.3 session 1、常见反爬 User-Agent:浏览器身份标识;Referer:请求的来源…

YOLOv5改进 | 二次创新篇 | 结合iRMB和EMA形成全新的iEMA机制(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是二次创新的机制,二次创新是我们发表论文中关键的一环,为什么这么说,从去年的三月份开始对于图像领域的论文发表其实是变难的了,在那之前大家可能搭搭积木的情况下就可以简单的发表一篇论文,但是从去年开始单纯的搭积木其实发表论…

Rational Architect 安装提示:插入标注为IBM的磁盘集的第n张磁盘 未能验证位置的介质

这个问题在网上没有搜到 插入标注为IBm的磁盘集的第n张磁盘,选择目录, 应该选择RSP解压以后对应的disk1文件夹就可以正常安装,如果选择其他路径会自动卸载相当于白安

Spring Boot - JaCoCo Code Coverage

文章目录 概述如何集成pom添加插件Code Demo排除不相关的类CI/CD中使用完整POM 概述 JaCoCo(Java Code Coverage)是一个开源的Java代码覆盖率工具,它主要用于评估Java程序的测试完整性。通过跟踪测试过程中执行的代码,JaCoCo能够…

云服务器指定pip,指定python解释器

指定pip下载器: echo "alias pip/www/xxx/bin/pip3" >> ~/.bashrc source ~/.bashrc alias 指定python解释器: echo "alias python/www/xxx/bin/python3" >> ~/.bashrc source ~/.bashrc alias 检验修改情况 pip -…

【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《…