无法将类型“int”隐式转换为“byte”。
        byte a = 1;
        byte b = 2;
        byte c = 3;
        a = b + c;

为什么最下面b,c变成int型了呢= =

0

2个回答

byte 表示一个字节,他的表示范围[-128 127],
byte a = 1;
byte b = 2;
byte c = 3;

都在这个范围之内,没有问题。
这里还有一个问题 就是我们写的整数,没有明确指出类型(比如说 byte b = 2;中的2) 系统默认是int的,
那么为什么不会编译出错呢,这里( 我认为 )这个整数如果没有超出范围(比如 byte b = 2;在范围之内),编译系统有个自动转换。
那么a = b + c; ;怎么又会编译出错呢,而且 a,b都是byte型的,这里java又有自己的一个机制,就是防止两个小数相加超出自己所表示的范围,把a ,b变成 int 在相加。相加后也是int 型(注意这里的int 和 上面说的没有指出类型的整数默认是int 有区别,这里相当于你自己实际定义的了 例 int c=0; 系统不会在将这种明确规定数据类型的数做出自动转换的。转换也要自己强制类型转换c=byte(a+b); 这样看来好像更符合防止两个数相加超出自己表示范围的机制)。
c=a+2;和c= a + b;情况差不多。
byte c=1+2;这个就好理解了,编译器是把 1+2 看作一个整体的 就是3了,3

1

不是 b c 变成int了 是b+c 是int的。byte的比int低。相加是会自动转换成int.

0
aahuachun
aahuachun 哦,这样,谢谢了。
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
错误 2 无法将类型“int”隐式转换为“bool”
<br />  <br />为什么出错呢<br />      DateTime year = new DateTime(2004, 12, 22, 13, 23, 16);<br />        DateTime youyear = year.AddYears(28);<br />        if (youyear.CompareTo(DateTime.Now) = 0)<br />        {<br />            Response.Write("目前他还没有到28岁");<b
C# int 转换为byte 的浅析
int x=-28; byte y=(byte)x; C#中byte类型是无符号8位整数类型,值范围为0~255. 数字在内存中是按补码的形式存放的,-28 的补码为: 11111111 11111111 11111111 11100100 那么将x强制转换为byte类型的时候,就会拿到最低的八位 11100100, 并且认为它是一个byte类型,即无符号的整数。 这样就得到了1110
c#无法将类型int隐式转换为string怎么解决?
entity.userid = txtUserid.Text;                         if (entity.userid.Length             {                 txtUserid.Focus();                 throw new Exception("UserID不能为空");            
Linq:无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)
【前言】    最近项目中需要把我们的第一版系统的SQL语句转换成Linq表达式,对于之前没有接触过Linq表达式的我,研究的过程中真的遇到了好多问题!最头疼的就是: “无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)”    今天就来说说这个令人头疼的bug! 【正文】 一、bug描述: 1、When——何时出现的? 此问题是出现在我写li
byte、short和char隐式的转换为int
byte、short和char隐式的转换为intbyte a=1; byte b=3; byte c=a+b; byte d=1+3; 为什么byte c=a+b;这个不对。byte d=1+3;这个却没有错误 解答: +操作会将变量转成int 1+3编译器会自动转成4 -做加法运算的时候,数据类型是首先转变成int,这样就对了:byte c=(byte)(a+b); Java中涉及byt
无法将类型“string”隐式转换为“int”的处理办法
for (int i=0;dr.Read();i++) { list objItem = new list(); objItem.id = dr["id"].ToString();//无法将类型“string”隐式转换为“int” objItem.title = dr["title"].ToString() ; objItem.name = dr["name"].ToString() ; objI
无法将类型"int"隐式转换为"string"
#region 得到一个对象实体 public static shubuy GetModel(int Buy_id) { SqlParameter[] parameters = { new SqlParameter ("@Buy_id",SqlDbType.Int,4) }; parameters[0].Value = Buy_id; Customer model = new Customer()
关于无法将类型“object”隐式转换为“string”
关于无法将类型“object”隐式转换为“string” 原码: void SubmitBtn_Click(Object sender, EventArgs e) { Session["username"]=""; OleDbConnection objConnection; OleDbCommand objCommand; OleDbDataReader objDataReader; st
VS C# 获取系统当前时间+timer的作用+无法将类型“int”隐式转换为“string”;
总结一下今天遇到的一个小问题; 在敲机房重构的时候因为要在主窗体上显示一个时间,当时第一反应就是从系统获取,之前在学VB的时候印象中有过,不过现在是C#,需要一个全新的想法来做,下面是我的第一版代码: private void frmMain_Load(object sender, EventArgs e) { System.Da
C#的隐式和显示类型转换
关于隐式转换和显示转换,每种语言都有的,C#中当然也不例外。一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为int;再一个就是传参数的时候,需要注意哪些需要显示转换,或者对集合赋值的时候也要注意类型的问题。 1. 隐
C# 泛型 无法将类型xx隐式转换为“T”
直接奖泛型转为T是不能转换的 要先转Object 例: public static T GetValue(string inValue) { if (typeof(T) == typeof(Bitmap)) { return (T)(Object)new Bitmap(inValue);
如何解决:出现无法将类型“xx”隐式转换为"xx"的错误
前言: 相信很多小伙伴在刚入门的时候遇到的问题最多的就是此类问题了吧,但是每次都会找半天才会发现问题的所在,今天就码一篇如何快速找到此类问题的原因的文章。   问题原因: &amp;lt;一&amp;gt;赋值时两边的值不是同一类型,并且未进行转换 &amp;lt;二&amp;gt;赋值时两边的值不是同一类型,转换类型错误 &amp;lt;三&amp;gt;窗体中某个控件的名称与赋值的名称重复   解决方法: 下面附上各种类型...
使用linq查询时遇到无法隐式转换的解决办法
查询时报错无法将某某类型隐式转换成某某类型 Students类 Students.cs public int id; public string name; public string sex; 查询语句如下: Students stu=new Students(); stu=dbContext.StudentsDS.Where(s=&amp;amp;gt;s.id==12365478).Select...
原文:C# 泛型 无法将类型xx隐式转换为“T”
原文:C# 泛型 无法将类型xx隐式转换为“T”直接奖泛型转为T是不能转换的 要先转Object例: public static T GetValue&amp;lt;T&amp;gt;(string inValue) { if (typeof(T) == typeof(Bitmap)) { return (T)(Object)...
解决Html.CheckBoxFor中”无法将类型 bool 隐式转换为 bool。存在一个显式转换..."的方法...
在后面加.Value属性 @Html.CheckBoxFor(m =&amp;gt; m.IsComment.Value, new { style = &quot;vertical-align: middle;&quot; })  
无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法
无法确定条件表达式的类型,因为“&amp;lt;null&amp;gt;”和“System.DateTime”之间没有隐式转换----解决办法 当在C#使用可空类型时要注意类型间的一致,出现上述和DateTime无法转换的问题就是没有注意类型间的一致,例如,当给一个可空的时间类型字段赋值时不能使用null,而要使用一个DateTime? 类型。 例子:(报错了)   public DateTime? tim...
c#运行项目时,无法将类型“string”隐式转换为“System.Windows.Forms.Label”
  看看你多加的那个组件名称是不是用了比如“name”等系统关键字
从void*类型隐式转换为int*类型
最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码:   5从void*类型隐式转换为int*类型   int*i=malloc(sizeof(int)*5);   但要使其在C和C++两者皆能运作,就需要使用显式转换:   2int*i=(int*)malloc(sizeof(int)*5);   
无法将类型“string”隐式转换为“char
我刚开始学C#,在一本书上看见以下例子, 运行有错误,RT: 代码如下: using System; using System.Collections.Generic; using System.Text; namespace EX01 {     class Program     {         static void Main(string[] args)         {      
C#的隐式类型转换和显式类型转换
C#的隐式类型转换和显式类型转换 C#的隐式类型转换     在C#语言中,一些预定义的数据类型之间存在着预定义的转换。比如,从int类型转换到long类型。C#语言中数据类型的转换可以用分为两 类:隐式转换(implicit conversions)和显式转换(explicit conversions)。这篇文章我们将详细介绍这两类转换。 1. 隐式类型转换 隐式转换就是系统默认的、不
int类型强制转换为 byte类型
Java代码  byte类型" style="margin:0px; padding:0px; border:0px; list-style:none"> public class Test {       public static void main(String[] args) {           int start = -131;           int end
无法确定表达式的类型,因为<null>和int之间没有隐式转换
遇到过好多次的问题了,因为一直忙着码代码,所以没时间去彻底的研究这个问题。 今天实在反了,就想想了这个问题 下面是代码。 首先是一个实体类,有个 WinningType 字段类型是 int? 的可为空类型 public class Capital { /// /// key /// public int
使用winform时,出现无法将类型“string”隐式转换为"System.Windows.Forms.TextBox"的错误。
已经犯了两次这个错误,我必须拿小本本把他记下来,不然对不起我自己。 如果出现这个问题,是因为在winform中,将某个控件的名称写成了Name 。 哎,说多了就是泪,拿小本本记下来,以后就不会犯错了。...
无法将类型“string”隐式转换为“System.Data.SqlClient.SqlParameter”(错误)
   cmd.Parameters["@name"].Value=kehuname.Text;   cmd.Parameters["@fuzeren"].Value=fuzeren.Text;   cmd.Parameters["@jibie"].Value=jibie.Text;   cmd.Parameters["@jianjie"].Value=jianjie.Text;无法将类型“st
dataGridView_关于如何解决无法将类型“void”隐式转换为“System.Data.Datatabel”
一、原码如下:  private void GetData()                                                                                                       //取数据        {            try            {                String
无法将类型"byte"隐式转换为"byte[]"
byte firstByte = Convert.ToByte(serialPort.ReadByte());rn int bytesRead = serialPort.BytesToRead;rn byte[] bytesData = new byte[bytesRead + 1];rn bytesData[0] = firstByte;rn for (int i = 1; i <= bytesRead; i++)rn bytesData = (byte)(serialPort.ReadByte());rn txtReceive.Text = System.Text.Encoding.Default.GetString(bytesData);rnrnrnbytesData = (byte)(serialPort.ReadByte());rn這個出現了 无法将类型"byte"隐式转换为"byte[]" 的問題 請問怎麼解決?
无法将类型"byte[]"隐式转换为"byte"!!!
rn//16进制格式的string 转成byte[]rn public static byte[] GetBytes(string hexString, out int discarded)rn rn discarded = 0;rn string newString = "";rn char c;rn // remove all none A-F, 0-9, charactersrn for (int i = 0; i < hexString.Length; i++)rn rn c = hexString[i];rn if (Uri.IsHexDigit(c))rn newString += c;rn elsern discarded++;rn rn // if odd number of characters, discard last characterrn if (newString.Length % 2 != 0)rn rn discarded++;rn newString = newString.Substring(0, newString.Length - 1);rn rnrn int byteLength = newString.Length / 2;rn byte[] bytes = new byte[byteLength];rnrnrn string hex;rn int j = 0;rn for (int i = 0; i < bytes.Length; i++)rn rn hex = new String(new Char[] newString[j], newString[j + 1] );rnrnrn [color=#FF0000] bytes[i] = HexToByte(hex); //此处提示 无法将类型"byte[]"隐式转换为"byte"!!![/color]rn j = j + 2;rn rn return bytes;rn rnrnrn private static byte[] HexToByte(string hexString)rn rn byte[] returnBytes = new byte[hexString.Length / 2];rn for (int i = 0; i < returnBytes.Length; i++)rn returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);rn return returnBytes;rn rnrnrnrn在线等。
8种基本数据类型和运算(隐式转换和强制转换)
java中的8种基本数据类型:byte,short,char,int,long,float,double,boolean。 byte  1 个字节,取值范围:-128~127,      8 位; short 2 个字节,取值范围:-2^15~2^15-1, 16 位; char 2 个字节; int 4 个字节,   取值范围:-2^31~2^31-1,    32 位; long 8
c#怎么将string隐式转换为char C#中char[]与string之间的转换 C# list与数组转换
C# list与数组转换 2014-07-11 11:54 9425人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: C#(129) 作者同类文章X .net(65) 作者同类文章X 版权声明:本文为博主原创文章,未经博主允许不得转载。 1,从System.Str
DBNull.Value 强制转换为类型“System.DateTime”。请使用可空类型
转取数据库中的数据时,数据库中的字段有可能是空值,虽然Linq中的Field方法和SetField方法都可以处理可以为 null 的类型,不必像前面的示例那样检查 Null 值,我们再用Field将一些可空的值赋给实体的属性时,有可能会报错,因为实体的属性是可空类型,例如: 角色(SmRole)实体有如下可空类型的创建时间的属性 public virtual DateTime? Createdtime { get { return _createdtime; } set { _bIsChanged |= (
郁闷,名字居然被占用.
RT,用了10多年的名字,到哪都被占用..记得10年前,哪有一个人取我这个名字的啊..都是那种超傻的名字..叹..
C#中隐式类型转换和显示类型转换
C#支持隐式类型转换,但前提是不损失数据精度。而C和C++不同的是,即使损失精度也会自动转换。如:int x;    double y;    y=2.7;    x=y;假使赋值操作真被执行,那么y值的小数部分将被截取,x取得值2。这样就发生了精度损失,或称窄化转换。C或C++编译器允许这样的赋值,不出一声就把值给截短;然而,C#编译器会提示错误:error CS0029:Canno
OpenCv,EmguCv及.net之间的图像类型转换
OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net) 作者:王先荣 原文链接:http://www.cnblogs.com/xrwang/archive/2010/01/26/TheInteractionOfOpenCv-EmguCvANDDotNet.html 前言     在.net中使
关于byte,int,short,long,float,double等类型的互相转换的代码理解
首先普及下,byte(1字节 = 8位二进制),short(2字节),int(4字节),long(8字节,double float), int 转 byte部分代码 void intToBytes(int val, char *buff, int size) { //MODBUS_LOCK memset(buff, 0, sizeof(char)*size); ...
错误1无法将类型“void”隐式转换为“object”
 错误1无法将类型“void”隐式转换为“object”c:/inetpub/wwwroot/Shop/WebShop/Admin/AdminManage.aspx.cs6345http://localhost/Shop/WebShop/  private void BindDatagrid_orderinfo() //定单清单        {            DataGrid_O
无法将类型“System.IntPtr”隐式转换为“byte[]”
public bool MessageBackMethod(int lCommand, ref HKNetSDK.CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)rn rn if (lCommand == 0x1112)rn rn MessageBox.Show(pAlarmInfo.ToString());rn HKNetSDK.CHCNetSDK.NET_VCA_FACESNAP_RESULT struFaceSnap = new CHCNetSDK.NET_VCA_FACESNAP_RESULT();rn struFaceSnap = (CHCNetSDK.NET_VCA_FACESNAP_RESULT)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_VCA_FACESNAP_RESULT));rn if (struFaceSnap.pBuffer1 != null)rn rn byte[] bs = struFaceSnap.pBuffer1;rn ShowAndSavePictureAiCamera(bs);rn searchComparePic(bs);rn rn rnrnrnC#小白,第一次接触IntPtr类型指针报错不知道如何处理指点一下
【C#】中Decimal类型转换的问题
数据库:SQL Server 2008 文件类型:*.aspx 这次的目标是从一个已有的DataSet中读取数据,然后逐行获取其中的金额数据(Varchar型)并完成累加。 问题一: select Round(isnull(SUM(isnull(dr, 0) - isnull(cr, 0)), 0), 2)   from bank_record_detail  where bank_n
警惕!Unity3D中UnityEngine.Object的一个小陷阱
先看看如下C#的脚本代码: 猜猜控制台打出来的是什么? In the bool parameter function, value info is:  True 肯定出乎很多人的意料吧? transform的类型跟bool类型一点关系都没有,怎么会调用TestFunction(bool value)呢?我碰到这个问题的时候,第一反应是编译器出问题了,后来同事的机
数据类型--隐式类型转化
减号、乘号、除号、取模等都是隐式类型转换- * / % 把字符串变成数字 加号 + 转换成字符串 自加、自减 ++、-- 转换成数字 大于、小于 > :仔细看清楚是数字的比较还是字符串的比较 取反叹号 ! :把右边的数据通通转成布尔值 双等号 == :转成布尔值,只看值不看数据类型 如果转换不成功,就会出现NaN(Not a Number)。 alert('200'-3);//197 a
C++ primer学习之类型转换(1) 隐式转换
隐式转化 先来看下面这条表达式,它的目的是将ival初始化为6: int ival=3.541+3; //编译器可能会警告该运算损失了精度 加法的两个运算对象类型不同,3.541的类型是double,3的类型是int。C++语言不会直接将两个不同类型的相加,而是根据类型转换规则设法将运算对象的类型统一后再求值
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 byte学习 java 区块链类型