您的位置:程序门 -> .net技术 -> c#



short类型的0怎么表示?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


short类型的0怎么表示?[已结贴,结贴人:hbxtlhx]
发表于:2007-01-04 18:00:20 楼主
我知道long类型的0,可以用0l表示,
decimal类型的0可以用0m表示,
那么short类型的0怎么表示呢?

或,
有一个object类型的值,它的各个位都是0,那么我怎么知道它的各个位都是0呢?

发表于:2007-01-04 18:24:051楼 得分:5
没有类似的表示方法.
发表于:2007-01-04 18:25:532楼 得分:0
short没有对类似的表示方法。
发表于:2007-01-04 18:28:533楼 得分:2
为什么要强调   short的0呢。。。。
大不了(short)0好了。。。。
发表于:2007-01-04 18:40:104楼 得分:2
short是system.int16的别名,表示16有符号整数,直接是short   a   =   0;

另:
"有一个object类型的值,它的各个位都是0 ",貌似不太懂...
发表于:2007-01-04 18:41:305楼 得分:0
short是system.int16的别名,表示16有符号整数,直接是short   a   =   0;

另:
"有一个object类型的值,它的各个位都是0 ",貌似不太懂...
发表于:2007-01-04 18:41:536楼 得分:0
short是system.int16的别名,表示16有符号整数,直接是short   a   =   0;

另:
"有一个object类型的值,它的各个位都是0 ",貌似不太懂...
发表于:2007-01-04 19:47:317楼 得分:2
只有int   uint   long   ulong   decimal这5种类型可以参与算数运算
指明常数类型才有意义,不存在short型常数的问题,
short可以自动隐式转换为int
发表于:2007-01-04 19:51:048楼 得分:5
//有一个object类型的值,它的各个位都是0,那么我怎么知道它的各个位都是0呢
object是引用类型,没有什么各个位都是0的说法
只有拆箱还原为它所代表的值类型后,才有这种说法
至于某个位是1还是0,可以用与位操作&
发表于:2007-01-04 21:07:339楼 得分:2
同意vienamm的意见..

short在进行处理时,会自动转成int型的..
发表于:2007-01-04 21:47:3110楼 得分:2
只有int   uint   long   ulong   decimal这5种类型可以参与算数运算
指明常数类型才有意义,不存在short型常数的问题,
short可以自动隐式转换为int
发表于:2007-01-05 09:11:4111楼 得分:10
short   i   =   1;
short   j   =   i   +   2;
如上代码编译会出错,我想楼主意思是如果有个后缀可以写成
short   j   =   i   +   2x;
就不必类型转换了。


发表于:2007-01-05 11:11:1512楼 得分:2
short就是int16,二者完全一样
发表于:2007-01-05 11:22:4713楼 得分:5
没有类似的声明方式吧,
只能是
short   a=0;
发表于:2007-01-05 11:46:1414楼 得分:1
标记
发表于:2007-01-05 12:38:2015楼 得分:2
int
16
发表于:2007-01-05 12:38:2716楼 得分:0
xuexi  
发表于:2007-01-05 12:38:4017楼 得分:2
支持一下
发表于:2007-01-05 12:53:2718楼 得分:0
有一个object类型的变量,它可能是一个整数,小整数,大整数,可能是布尔型值,
现在的问题是我怎么知道这个object的变量所表示的值是0或是布尔型的false.
假如这个object的变量为obj,
short   sv=0;
object   obj=sv;
那么我怎么怎么这时的obj是表示的0值呢?
是:obj==(short)0   ???

又可能:
long   lv=0l;
object   obj   =   lv;
这个时候呢?

我是要把所有的(short)0,(long)0,(int)0;false....等等都要逐个的比较一下吗?

只所以有这个疑问是因为
object.equals(lv,   0)是不能比较的出来的.

大家知道什么问题了吧.
发表于:2007-01-05 14:12:1819楼 得分:2
object的话,除了赋值的那个,谁也不知道它具体什么类型。与short无关
发表于:2007-01-05 14:34:2320楼 得分:0
楼上的回答不对题啊...

是与short无关,我知道.

我想知道,obj的是否表示0
发表于:2007-01-05 14:37:0621楼 得分:2
学习
发表于:2007-01-05 14:37:5622楼 得分:0
object没有0的概念,是不是值类型还不一定,别说等不等于0了。
发表于:2007-01-08 09:39:4723楼 得分:0
我现在知道它是值类型,
我也知道它里面放的是一个short类型,或long类型,或int类型的值,而且这个值是0,
我现在怎么用程序来判断!
楼上的根本没有理解了我的意思!
发表于:2007-01-08 12:54:5624楼 得分:0
例如:
short   a   =   0;
object   obj   =   a;
bool   b   =   object.equals(obj,   0);
system.console.writeline(a);
输出为false,这个方法equals是不行了.那怎么能知道obj表示的值是0呢?
发表于:2007-01-08 12:56:1325楼 得分:0
(上面写错了,是这样的)
例如:
short   a   =   0;
object   obj   =   a;
bool   b   =   object.equals(obj,   0);
system.console.writeline(b);
输出为false,这个方法equals是不行了.那怎么能知道obj表示的值是0呢?
发表于:2007-01-08 12:59:4926楼 得分:0
楼主知道装箱,不知道拆箱吗?
发表于:2007-01-08 13:00:5027楼 得分:0
运行的时候,我是不知道把这个箱拆成什么类型的.
发表于:2007-01-08 13:02:3928楼 得分:0
因为这个值可能是int,short,long中的一种,我现在除了一个个的来比较外,没有别的办法.
发表于:2007-01-08 13:05:2729楼 得分:2
short   a   =   0;
object   obj   =   a;
short   aa   =   (short)obj;
bool   b   =   (aa==0);
system.console.writeline(b);
发表于:2007-01-08 13:07:3930楼 得分:0
老兄也太看不起我了吧,如果这么简单我就不问了:

short   aa   =   (short)obj;
我怎么知道用shot来强制转换而不是用long来转呢...
发表于:2007-01-08 13:34:4331楼 得分:22
//现在除了一个个的来比较外,没有别的办法
正确

if   (obj   is   short)
{
        short   aa   =   (short)obj;
}
if   (obj   is   int)
{
        int   aa   =   (int)obj;
}
发表于:2007-01-08 13:59:2932楼 得分:0
看来只能如此写了.我看了一下整数表有如下的一些类型:
sbyte   byte   char   short   ushort   int   uint   long   ulong  
要知道它们所对应的零值,只能用如下的方法来写了:

if   (object.equals(obj,   (sbyte)0)   ¦ ¦   object.equals(obj,   (byte)0)   ¦ ¦   object.equals(obj,   (char)0)   ¦ ¦   object.equals(obj,   (short)0)   ¦ ¦   object.equals(obj,   (ushort)0)   ¦ ¦   object.equals(obj,   (int)0)   ¦ ¦   object.equals(obj,   (uint)0)   ¦ ¦   object.equals(obj,   (long)0)   ¦ ¦   object.equals(obj,   (ulong)0))
{
          system.console.writeline( "零值 ");
}
else
{
        system.console.writeline( "非零值 ");
}
发表于:2007-01-08 14:00:1433楼 得分:10
//现在除了一个个的来比较外,没有别的办法
正确


直接用convert不就行了?convert.todouble或者convert.toint64


另,short   j   =   i   +   2;这个编译出错的原因是viena说的,short类型不能参与运算,即short+short会变成int。

        short   i,   j;
        i   =   j   =   1;
       
        short   k   =   i   +   j;

这段程序也无法通过编译……
发表于:2007-01-08 14:01:0934楼 得分:11
你如果确定不会出现ulong,就用convert.toint64好了……
发表于:2007-01-08 14:08:2235楼 得分:0
强制的都用一个类型表示也是一个办法,不过感觉转来转去可能会"失真"的.
这是我没有采用这种方法的原因.
发表于:2007-01-08 14:17:0836楼 得分:2
你只要检测是否为0失真也没关系哈,况且,如果是toint64,都是扩大转换,没有失真的……
发表于:2007-01-08 14:33:0337楼 得分:0
好,结贴.
发表于:2007-01-08 14:39:3738楼 得分:7
问题冒似简单

研究起来才发觉很有深度

关注


快速检索

最新资讯
热门点击