显式转换和强制转换

如果要把短类型转换为长类型,让长类型保存短类型的所有位很简单。然而,在其他情况下,
目标类型也许无法在不损失数据的情况下容纳源值。
例如,假设我们希望把ushort值转化为byte。

  • ushort可以保存任何0~65535的值。
  • byte只能保存0一255的值。
  • 只要希望转换的ushort值小于256,就不会损失数据。然而,如果大于256,最高位的数
    据将会丢失。

例如,图17-5演示了尝试把值为1365的ushort类型转换为byte类型会导致数据丢失。不
是源值的所有最高位都适合目标类型,这会导致溢出或数据丢失。源值是1365,而目标的最大
值只能是255。最终字节中的结果值为85,而不是1365。

尝试把ushort转换为byte

很明显,在所有可能的无符号16位ushort值中,只有相当小一部分(0.4%)能在不损失
数据的情况下安全转换为无符号8位byte类型。其他值会导致数据溢出(overflow),产生其
他值。

强制转换
对于预定义的类型,C#会自动将一个数据类型转换为另一个数据类型,但只是针对那些从源
类型转换为目标类型时不会发生数据丢失的情况。也就是说,如果源类型的任意值在被转换成目
标类型时会丢失值,那么C#是不会提供这两种类型的自动转换的。如果希望对这样的类型进行
转换,就必须使用显式转换。这叫作强制转换表达式
如下代码给出了一个强制转换表达式的示例。它把varl的值转换为sbyte类型。强制转换
表达式的构成如下所示。

  • 一对圆括号,里面是目标类型。
  • 圆括号后是源表达式。

image
如果我们使用强制转换表达式,就意味着要承担执行操作可能引起的丢失数据的后果。这就
好比我们说:“不管是否会发生数据丢失,我知道在做什么,进行转换吧。"(这时你一定要真正
清楚自己在做什么。)

例如,图17-6演示了强制转换表达式将两个ushort类型的值转换为byte类型。对于第一种
情况,没有数据丢失。对于第二种情况,最高位丢失了,得到的值是85,很明显不等于源值1365。

强制转换ushort为byte

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

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

相关文章

浅谈自动化设计最常用的三款软件catia,eplan,autocad

笔者从上半年开始接触这三款软件,掌握了基础用法,但是过了一段时间不用,发现再次用,遇到的问题短时间解决不了,忘记的有点多,这里记录一下,防止下次忘记Elpan:问题1QF01是柜安装板上的一个部件&…

网络编程7.17

练习&#xff1a;服务器&#xff1a;#include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include &…

c++ 模板元编程

听说模板元编程能在编译时计算出常量&#xff0c;简单测试下看看&#xff1a;template<int N> struct Summation {static constexpr int value N Summation<N - 1>::value; // 计算 1 2 ... N 的值 };template<> struct Summation<1> { // 递归终…

【深度学习】神经网络过拟合与欠拟合-part5

八、过拟合与欠拟合训练深层神经网络时&#xff0c;由于模型参数较多&#xff0c;数据不足的时候容易过拟合&#xff0c;正则化技术就是防止过拟合&#xff0c;提升模型的泛化能力和鲁棒性 &#xff08;对新数据表现良好 对异常数据表现良好&#xff09;1、概念1.1过拟合在训练…

JavaScript的“硬件窥探术”:浏览器如何读取你的设备信息?

JavaScript的“硬件窥探术”&#xff1a;浏览器如何读取你的设备信息&#xff1f; 在Web开发的世界里&#xff0c;JavaScript一直扮演着“幕后魔术师”的角色。从简单的页面跳转到复杂的实时数据处理&#xff0c;它似乎总能用最轻巧的方式解决最棘手的问题。但你是否想过&#…

论安全架构设计(层次)

安全架构设计&#xff08;层次&#xff09; 摘要 2021年4月&#xff0c;我有幸参与了某保险公司的“优车险”项目的建设开发工作&#xff0c;该系统以车险报价、车险投保和报案理赔为核心功能&#xff0c;同时实现了年检代办、道路救援、一键挪车等增值服务功能。在本项目中&a…

滚珠导轨常见的故障有哪些?

在自动化生产设备、精密机床等领域&#xff0c;滚珠导轨就像是设备平稳运行的 “轨道”&#xff0c;为机械部件的直线运动提供稳准导向。但导轨使用时间长了&#xff0c;难免会出现这样那样的故障。滚珠脱落&#xff1a;可能由安装不当、导轨损坏、超负荷运行、维护不当或恶劣环…

机器视觉的包装盒丝印应用

在包装盒丝网印刷领域&#xff0c;随着消费市场对产品外观精细化要求的持续提升&#xff0c;传统印刷工艺面临多重挑战&#xff1a;多色套印偏差、曲面基材定位困难、异形结构印刷失真等问题。双翌光电科技研发的WiseAlign视觉系统&#xff0c;通过高精度视觉对位技术与智能化操…

Redis学习-03重要文件及作用、Redis 命令行客户端

Redis 重要文件及作用 启动/停止命令或脚本 /usr/bin/redis-check-aof -> /usr/bin/redis-server /usr/bin/redis-check-rdb -> /usr/bin/redis-server /usr/bin/redis-cli /usr/bin/redis-sentinel -> /usr/bin/redis-server /usr/bin/redis-server /usr/libexec/red…

SVN客户端(TortoiseSVN)和SVN-VS2022插件(visualsvn)官网下载

SVN服务端官网下载地址&#xff1a;https://sourceforge.net/projects/win32svn/ SVN客户端工具(TortoiseSVN):https://plan.io/tortoise-svn/ SVN-VS2022插件(visualsvn)官网下载地址&#xff1a;https://www.visualsvn.com/downloads/

990. 等式方程的可满足性

题目&#xff1a;第一次思考&#xff1a; 经典并查集 实现&#xff1a;class UnionSet{public:vector<int> parent;public:UnionSet(int n) {parent.resize(n);}void init(int n) {for (int i 0; i < n; i) {parent[i] i;}}int find(int x) {if (parent[x] ! x) {pa…

HTML--教程

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><h1>我的第一个标题</h1><p>我的第一个段落。</p> </body> </html&g…

Leetcode刷题营第二十七题:二叉树的最大深度

104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff…

微信小程序翻书效果

微信小程序翻书效果 wxml <viewwx:for"{{imgList}}" hidden"{{pagenum > imgList.length - index - 1}}"wx:key"index"class"list-pape" style"{{index imgList.length - pagenum - 1 ? clipPath1 : }}"bindtouchst…

个人IP的塑造方向有哪些?

在内容创业和自媒体发展的浪潮下&#xff0c;个人IP的价值越来越受到重视。个人IP不仅是个人品牌的延伸&#xff0c;更是吸引流量来实现商业变现的重要工具。想要塑造个人IP&#xff0c;需要我们有明确的内容方向和策略&#xff0c;下面就让我们来简单了解下。一、展现自我形象…

Spring之【BeanDefinition】

目录 BeanDefinition接口 代码片段 作用 BeanDefinitionRegistry接口 代码片段 作用 RootBeanDefinition实现类 GenericBeanDefinition实现类 BeanDefinition接口 代码片段 public interface BeanDefinition {// ...void setScope(Nullable String scope);NullableSt…

GD32VW553-IOT LED呼吸灯项目

GD32VW553-IOT LED呼吸灯项目项目简介这是一个基于GD32VW553-IOT开发板的LED呼吸灯演示项目。通过PWM技术控制LED亮度&#xff0c;实现多种呼吸灯效果&#xff0c;展示RISC-V MCU的PWM功能和实时控制能力。功能特性1. 多种呼吸灯效果正弦波呼吸&#xff1a;自然平滑的呼吸效果线…

Linux(Ubuntu)硬盘使用情况解析(已房子举例)

文章目录前言输出字段详解1.核心字段说明2.生活化的方式解释&#xff08;已房间为例&#xff09;3.重点理解①主卧室 (/)​​②​​临时房 (tmpfs)​​总结前言 “df -h” 是在 Linux ​​检查磁盘空间状态的最基本、最常用的命令之一​​。当发现系统变慢、程序报错说“磁盘空…

vue中的this.$set

在 Vue 2 中&#xff0c;this.$set 是一个用于响应式地添加新属性到已有对象的全局 API。它的主要作用是解决 Vue 无法检测到对象属性添加或删除的限制&#xff08;由于 Vue 2 的响应式系统基于 Object.defineProperty 实现&#xff09;。1. 为什么需要 this.$set&#xff1f; …