当 (a+b)+c != a+(b+c)...

简介:

在这周的一次讨论中,有人说(a+(b+c)) 等于 ((a+b)+c) ,当a, b,c 全部都是简单数据类型,例如int,float,double ...

在数学上当然如此,但是在代码上却并非如此,首先考虑下System.Int32 以及下面的test.cs:

 

 
 
using System;
class Program
{
    static void Main(string[] args)
    {
        int a = int.MaxValue;
        int b = 1;
        int c = -a;
        try { Console.WriteLine(a+(b+c)); } 
        catch(Exception e) { Console.WriteLine(e.Message); }
  
        try { Console.WriteLine((a+b)+c); } 
        catch(Exception e) { Console.WriteLine(e.Message); }
    }
}

 

使用csc.exe test.cs 编译代码,运行test.exe,结果如下:

1

1

很容易理解。现在使用csc.exe /checked test.cs来进行编译,运行test.exe,结果如下:


Arithmetic operation resulted in an overflow.

 

所以,操作的顺序的确产生了差异,现在考虑下一个更有意思的例子,浮点数数字..float

 
 
using System;
class Program
{
    static void Main(string[] args)
    {
        float a = float.MaxValue;
        float b = -a;
        float c = -1;
        Console.WriteLine(a+(b+c));
        Console.WriteLine((a+b)+c);
    }
}

 

使用csc.exe test.cs进行编译,运行test.exe,结果如下:

0

-1

 

现在问你一个问题:

 

 

 

如果使用csc.exe /checked test.cs 进行编译,运行test.exe 那么结果是什么呢,为什么?

 






本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2011/10/13/2209609.html,如需转载请自行联系原作者
目录
相关文章
|
JavaScript API
JS如何模拟鼠标点击X,Y坐标
现在我有个窗口坐标X,Y. 如何利用JS点击该坐标? document.body.onclick = function(){ e = arguments[0]; var dt = e.
2551 0
|
缓存 小程序 前端开发
小程序picker解决方案
小程序picker解决方案
448 0
小程序picker解决方案
|
应用服务中间件 Android开发
|
SQL Oracle 关系型数据库
【Oracle】一款非常好用的trace文件分析工具之一
介绍一款非常好用的10046分析工具--trca(Trace Analyzer),以前分析10046跟踪文件的时候都是使用tkprof 工具,但是trca 比tkprof要简单的多而且分析的结果更全面: 可以从ML的文章:Trace Analyzer TRCAN...
1008 0
|
13天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
阿里云与企业共筑容器供应链安全
171328 12
|
16天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150295 32
|
24天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201959 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
6天前
|
存储 人工智能 安全
对话|无影如何助力企业构建办公安全防护体系
阿里云无影助力企业构建办公安全防护体系
1251 8