int与char运算的问题...

MediaCreationToolW11:Windows11系统升级与修复利器 在日常使用Windows11系统的过程中,我们可能会遇到一些棘手的问题,比如系统更新时出现异常导致无法成功更新,或者系统本身出现异常需要进行无损修复。此外,当我们的电脑尚未升级到Windows11,而我们又希望进行升级时,一款高效且可靠的工具就显得尤为重要。接下来,MediaCreationToolW11将开始下载Windows11的安装文件,并创建Windows11介质。在“选择你要执行的操作”界面中,选择“ISO文件”。此时,你可以使用你的账户登录系统,并开始使用全新的Windows11系统了。 阅读详情

int   i   =   1;      char   c= 'b ';
c   +=i;        //编译通过
c   =   c   +   i;        //编译错误
为什么啊?

 =======================================================================================

对两个容量不一样的数据类型的变量进行算术运算时,java会自动将小容量的变量进行精度提升,然后再进行运算,得到的结果类型是提升后的大容量的数据类型.如果将该结果赋值给小容量的数据类型的变量,则必须进行强制的类型转换,否则编译程序会报损失精度错.例如:
char   c= 'a ';
int   i   =   5;
首先,因为char类型是16位的,而int类型是32位的,在进行
(c+i)   运算时,自动将c提升到32位,然后与i相加,得到的结果是32位的,而此时
c=c+i;   必然报错,因为如果赋值成功,只是把低16位赋给了c,这个虽然正是楼主想要的结果,但是编译程序却不能判定你的意图是什么.
而这样:
c=(char)(c+i);   就没问题了.
楼上所说的字符和整数不能相加是不对的.java延续了c的习惯,只不过相加之后赋值时要进行类型转换.
至于为什么
c+=i;
能编译通过并得到正确结果,而   c=c+i;   却报错,是因为它们并不像楼主认为的那样是等价的.
java规范中说:
E1   op=E2   实际上等价于   :   E1=(T)(   (E1)op(E2)   )
其中T是E1的数据类型.这种类型转换或者是一个恒等转换,或者是一个窄化转换.
这个说明java是一种强类型的语言,对数据类型的要求是非常严格的,否则会引起混乱.
下面解释一下三种类型转换:恒等转换(相同容量的两个数据类型之间的赋值);拓宽转换(小容量类型赋值给大容量类型);窄化转换(大容量赋值给小容量类型).   实际上,前两种转换都是编译程序自动执行的,而窄化转换则要求必须显式的执行.
如果改一下:i+=c;   i=i+c;   则这两个语句都会编译通过,很容易理解.
不知道解释的够不够清楚.   :)

【笔记篇】Davinci Configurator OS模块(下) AUTOSAR OS的配置项和Vevtor MICROSAR OS的特性 阅读详情

相关推荐

Java服务端实现Google Pay支付功能

全网最全代码、最清晰服务端处理Google Pay,最清晰讲解Google Pay集成逻辑。

jack2350536098的博客 1万+

【无标题】

在C语言中,当char类型和int类型进行运算时,char类型会先自动转换为int类型,然后再进行运算。因此,当char和int相乘时,char类型会被先转换为int类型,然后进行乘法运算,最终得到的结果也是int类型。这样定义的数组,arr=arr[0]=&arr 都等于第一个元素的地址 无法对这个值进行改变。5th已经是\0,输出不显示,6th则是乱码了,当赋值给a[5]时相当于扩展了数组空间。pa是地址,arr[0]这个元素的地址,*pa是取这个地址的值。先数组再指针就是数组元素为指针的数组。

weixin_45996997的博客 615

避坑指南:STM32CubeMX安装后,你的第一个工程为什么中文全是乱码?

本文详细解析了STM32CubeMX安装后中文乱码问题的根源及解决方案。从诊断乱码现象到分析编码冲突背景,提供了新项目UTF-8化、旧项目GBK兼容及版本降级等多种实用方案,帮助开发者彻底解决这一常见问题。

weixin_30699955的博客 475

char与int之间的关系

其实char和int这些数据类型没有区别,只有大小范围的差异,char可以和int之间相互转换。在内存中int可以表示出char的字符,char也可以和int进行运算。 char a = '1'; char b = 49; int c = 49; printf("%c %d\n", a, a); printf("%c %d\n", b, b); printf("%c %d\n", c, c); if (a==b&&b==c&&

qq_41979948的博客 3065

SAP FICO 银企直联实战:从配置到异常处理的全流程解析

本文详细解析了SAP FICO银企直联的实战配置与异常处理全流程,涵盖银行主数据搭建、支付类配置、银行接口适配等关键步骤。通过实际案例分享,帮助用户掌握实时付款、余额监控和自动对账等核心功能,提升企业财务效率与安全性。特别针对常见问题如凭证重复付款、前置机UUID冲突等提供了实用解决方案。

weixin_29215815的博客 664

PaddleOCR在医疗票据识别中的实战:从部署到业务字段提取

本文详细介绍了PaddleOCR在医疗票据识别中的实战应用,重点阐述了其离线部署方案与PP-OCRv3模型选型优势。针对医疗票据敏感数据不出本地的合规要求,文章提供了从环境搭建、模型配置到核心字段提取策略的完整流程,并分享了性能优化与系统集成的实践经验,有效解决了医疗票据自动化录入的难题。

weixin_29271053的博客 238

Int和char数据运算

char和Int类型数据在计算机底层储存

Android开发—记录 1814

在 SAP BTP ABAP 环境中测试多租户 SaaS 解决方案的完整实践指南

ABAP SaaS测试阶段关键实践 在SAP BTP ABAP环境中开发多租户SaaS解决方案时,测试阶段(TST)对确保产品质量尤为关键。测试阶段应包含两个主要维度: 业务功能验证: 通过软件组件管理确保测试环境与代码仓库同步 创建并验证业务角色分配,确保权限配置正确 测试Fiori Launchpad导航流程和跨应用跳转 验证inbound/outbound通信配置 自动化质量管控: 在开发环境(DEV)执行本地ATC检查和单元测试 通过ABAP Test Cockpit(ATC)进行代码质量检查 集成

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 298

char和int相互转换的那些事

我们都知道C油烟可以强制类型转换,今天就让我们看看int和char之间的转换。 1、强制类型转换 #include<stdio.h> int main(){ int a = 9; char b = '8'; printf("%c\n",(char)a); printf("%d",(int)b); return 0; } 运行结果: 哈哈哈哈哈哈,没想到吧!我也没想到。。。。。 被现实打脸的我查阅了资料发现强制类型转换并不是想转成啥样就转成啥样。它是有精度

weixin_48089202的博客 3410

Cesium初级开发教程之三十:Primitive集合

教程示例网站:https://thomaz529.github.io。

484

RAG效果调优清单(命中率提升3倍)

本文提出了一套工程可落地的RAG(检索增强生成)模型组合方案,强调通过最优组合实现效果、成本和扩展性的平衡。核心架构包括Embedding模型、向量数据库检索、Rerank模型和LLM生成四个环节,推荐了四种具体组合方案:本地最优性价比(bge+reranker+Qwen 7B)、效果优先(bge-large+reranker+14B模型)、高并发(轻量模型+vLLM)和中英混合(多语言模型)。文章指出Embedding决定检索下限,Rerank提升准确率上限,LLM影响最终体验,并提供了不同场景的优化策略

刘一说的IT专栏 523

C语言字符型char和整型int的关系和示例

1、字符就是整数 字符和整数没有本质的区别。可以给 char变量一个字符,也可以给它一个整数;反过来,可以给 int变量一个整数,也可以给它一个字符。 char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII码表转换成对应的字符,如果以 %d 输出,那么还是整数。 int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII码表转换成对...

C语言技术网-码农有道 2万+

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 454

int与char运算的问题

int i = 1;char c= 'b '; c +=i; //编译通过 c = c + i; //编译错误 为什么啊?   对两个容量不一样的数据类型的变量进行算术运算时,java会自动将小容量的变量进行精度提升,然后再进行运算,得到的结果类型是提升后的大容量的数据类型.如果将该结果赋值给小容量的数据类型的变量,则必须进行强制的类型转换,否则编译程序会报损失精度错.例如: char c...

iteye_10879的博客 384

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java short 转char_Java中byte、short、char、int、long运算时自动类型转化问题

--------------------------------------------------------------------------------------------------★★自动(隐式、默认)类型转换与强制(显式)类型转换★★1) boolean类型不参与转换2) 默认转换A:从小到大B:byte,short,char --» int --» long --» float...

weixin_36385240的博客 934

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java中byte、short、char、int、long运算时自动类型转化问题

-------------------------------------------------------------------------------------------------- ★★自动(隐式、默认)类型转换与强制(显式)类型转换★★   1) boolean类型不参与转换  2) 默认转换    A:从小到大    B:byte,short,char --» int --...

weixin_30569033的博客 563

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java赋值运算的类型转换出新的问题_Java中byte、short、char、int、long运算时自动类型转化问题...

--------------------------------------------------------------------------------------------------★★自动(隐式、默认)类型转换与强制(显式)类型转换★★1) boolean类型不参与转换2) 默认转换A:从小到大B:byte,short,char --» int --» long --» float...

weixin_39545269的博客 349

C语言_int和char之间的转换

在C语言中的int和char之间的转换。

C201008的专栏 4424

char或unsigned char给int赋值区别

这段时间写了一个简单的游戏网络框架,里面套接字收发自己实现了一个Buffer,今天零散时间想实现一下Buffer提供read_int和write_int方法,大致代码如下 int buffer::read_int(void) { // 循环以BYTE位的方式填充整形 int value = _buffer[_start_offset++]; for (size_t i = 1; i < s

panshiqu的专栏 5228

类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)

byte b=2,e=3; byte f= b+e;以上代码不能通过编译,应改为:byte b=2,e=3;byte f=(byte) (b+e);

zzsyzjb的专栏 4490

java给char赋值_java中char类型的变量为什么可以赋值为整型数字?

1、JAVA中,char占2字节,16位。可在存放汉字2、char赋值char a='a'; //任意单个字符,加单引号。char a='中';//任意单个中文字,加单引号。char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。注:只能放单个字符。3、char运算char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。在JAV...

weixin_39890289的博客 3399

java 定义char_JAVA数据类型中的char类型

1、JAVA中,char占2字节,16位。可在存放汉字2、char赋值char a='a'; //任意单个字符,加单引号。char a='中';//任意单个中文字,加单引号。char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。注:只能放单个字符。3、char运算char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。在JA...

weixin_36116366的博客 5061

int类型与char类型的转换

int类型与char类型的转换 Java对char类型的数据在底层是按int类型来处理的。 char c=65; //c为A字符 int i='B'; //i为66 char c='A'; int i=c+1; //正确 c=c+1; //报错,应改为c=(char)(c+1);

YANG_Gang2017的博客 1715

数组模板类(数组元素是int,char,Teacher(类对象))(类对象的输出重载左移运算符问题未解决)

myVector_test.cpp// myVector_test.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; #include "myVector.cpp" //1 优化Teacher类,属性变成 char *pna...

RitaAndWakaka的博客 497

java char与运算_【考点】JAVA中的char类型

01-JAVA中,char占2字节,16位可在存放汉字02-char赋值char a='a'; //任意单个字符,加单引号。char a='中';//任意单个中文字,加单引号。char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。注:只能放单个字符。03-char运算char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。在...

weixin_39533659的博客 410

对于char,short和byte类型的运算

对于char,short和byte这些类型在计算时都会提升到int型来计算,所以a+b=3(这个3是int型的,所以我们需要将它强转成为byte类型,才不会出错。但是使用 += 或者 ++ 运算符可以执行隐式类型转换。//精度高的转化为低的这叫向下转。public class PlusEquals { public static void main(String[] args)...

weixin_30568715的博客 333
上一篇: java_Random
下一篇: “吸血鬼数字”
zi_jun
博客等级 码龄18年 109粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值