问题描述
在一个类中,有以下代码行,因为代码太长,省去其他部分。internalshortbi_buf;internalintbi_valid;internalvoidsend_bits(intvalue,intlength){intlen=length;unchecked{if(bi_valid>(int)Buf_size-len){//intval=value;//bi_buf|=(val<<bi_valid);bi_buf|=(short)((value<<bi_valid)&0xffff);//put_short(bi_buf);pending[pendingCount++]=(byte)bi_buf;pending[pendingCount++]=(byte)(bi_buf>>8);bi_buf=(short)((uint)value>>(Buf_size-bi_valid));bi_valid+=len-Buf_size;}else{//bi_buf|=(value)<<bi_valid;bi_buf|=(short)((value<<bi_valid)&0xffff);bi_valid+=len;}}}提示有错误:严重性代码说明项目文件行错误CS0675在经符号扩展的操作数上使用了按位“或”运算符;请考虑首先强制转换为较小的无符号类型红色代码这两行都报错,VS2015进行编译出现的
解决方案
本帖最后由 HappyQQ 于 2015-09-08 19:46:56 编辑
解决方案二:
这只是警告,不是错误,为什么原因看上面的连接里面
解决方案三:
VS2015直接是错误,并非警告,所有设置都是VS2015默认设置……
解决方案四:
VS2013.net4.5连警告都没有我怀疑楼主你贴出的代码是错的
解决方案五:
我用2015实际测试过,估计你的代码哪里有设定将Warning级别升级为Error级别吧
解决方案六:
代码标记为unchecked是几个意思?
解决方案七:
你还是找找被你精简掉的代码里面,是否有跟全局变量同名,但类型不同的局部变量吧具体在你出错的代码行,鼠标右键,转到定义,看变量到底是在哪里定义的,什么类型
解决方案八:
都位与ffff了,强转shot的意义是什么,另外我这里不报错
解决方案九:
装了一个vs2013,编译的时候是没有任何问题的,结贴了。