结果为什么为一个莫名其妙的负数?
C# code
 Int64 MaxSN = DateTime.Now.Year * (Int64)1000000000;
 计算正确
C# code
 Int64 MaxSN = DateTime.Now.Year * 1000000000;
 结果为什么为一个莫名其妙的负数?
------解决方案--------------------因为溢出了。
两个int计算DateTime.Now.Year * 1000000000得出来的是一个int32,之后才转化成int64,但是此时已经是负的了。
------解决方案--------------------Int64 MaxSN = (Int64)DateTime.Now.Year * 1000000000;
------解决方案--------------------
------解决方案--------------------Int64 MaxSN = (Int64)DateTime.Now.Year * 1000000000;
这种是强制类型转换DateTime.Now.Year  
Int64 MaxSN = DateTime.Now.Year * (Int64)1000000000;
这种是强制类型转换1000000000
类型不同,在内存那系统随便给了你个数  
------解决方案--------------------如果你的系统需要严格规避溢出的风险,请这么写:
C# code
checked
{
    try
    {
        Int64 MaxSN = DateTime.Now.Year * 1000000000;
    }
    catch (OverflowException ex)
    {
        // 如果溢出,会丢出一个OverflowException异常。
    }
}