我具有以下功能:
ulong
但是C#编译器说我不能添加long
和x
。 long.MaxValue
可以大于min
,而select * from pg_stat_replication;
可以为负数。所以我不能将一个投向另一个。如何进行? :-(
答案 0 :(得分:4)
C#编译器说我不能添加ulong和long。
正确。
x可以大于long.MaxValue,而min可以为负。
正确。
所以我不能一个投向另一个。
不正确。投放他们。走着瞧吧!您可能会感到惊喜。
长/长运算没有区别;位模式完全相同,并且编译为相同的代码。只是位的解释不同。
一个警告的词:有可能将C#置于一种模式,在这种模式下,当涉及整数算术的溢出发生时,它就会崩溃,而您显然不想在这里崩溃。通过使用表达式或语句形式的class Root():
功能,即使某人打开了“默认情况下已选中”,您也可以确保不会发生这种情况。
答案 1 :(得分:0)
learn casting
example
ulong min=2;
ulong range = 12 - 2; // guaranteed to fit in ulong
ulong x = (ulong) range;
long we= (long)x +(long) min;
long.MinValue = -9223372036854775808
long.MaxValue = 9223372036854775807
18446744073709551615 <-- Max ulong
0 <-- Minulong
long can be negative and positive both.
long range = long.MaxValue - 0; // guaranteed to fit in
long x = GenerateRandomLongBetween0AndRange(range);
`x= Math.Abs(x ) to get positive values if you are using long` for that.
Even your function is ok just change signature here
long Foo (long min, long max)
{
ulong range = max - min; // guaranteed to fit in long
ulong x = GenerateRandomULongBetween0AndRange(range);
return (long) x +(long) min; // result is guaranteed to fit in long
}