当 (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.
2473 0
|
缓存 小程序 前端开发
小程序picker解决方案
小程序picker解决方案
416 0
小程序picker解决方案
|
应用服务中间件 Android开发
|
SQL Oracle 关系型数据库
【Oracle】一款非常好用的trace文件分析工具之一
介绍一款非常好用的10046分析工具--trca(Trace Analyzer),以前分析10046跟踪文件的时候都是使用tkprof 工具,但是trca 比tkprof要简单的多而且分析的结果更全面: 可以从ML的文章:Trace Analyzer TRCAN...
996 0
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。