数据的表示(一)——0与1

*《程序员的数学思维修炼》一书用一些小故事、小例子来引出一些我们初学编程时常遇到的困惑

 

①0与1故事的启发:(0和1都没有9大,但它俩站一块就比9大)

  0并不表示什么都没有

  数的大小与所处位置有关系

 

②程序中的0:

  在电子技术中:0一般表示低电平,1为高电平

  在逻辑计算中:0一般表示逻辑假(False),1为逻辑真(True)

  在数值运算中,0与平常数学中0的含义相同

  

  1.思考:未赋值的变量为0吗?

    在不同的程序设计语言中,对于未赋值变量的处理不一样:

    对于Basi c类的程序语言(QB,VB等),其初始值为0。——对程序猿来说,这种初始化设置的方式很讨人喜欢,变量声明后就可以使用

    但在.Net Framework中,其值为空

    而对于C语言系列(C,C#,C++等),未初始化的变量编译器并不会将其初始化为0,而且不同编译系统可能采用不同的处理方式

  

  2.数值0的类型转换<此处初次提及了OOP和一般编程的一些不同之处——关于Boolean类型的定义,这让我想到在我刚开始接触OOP时的困惑,OOP和一般编程有何区别,也是我初学java时许多人问我这和C的思维方式有何不同我一直难以解释的问题,于是我在这里再次详细查询了一些文档资料,并将其整合在分类《我想》_随笔《初学者的困惑:OOP与一般编程的区别》中>

    数值0转化为字符串0很好理解,其显示的都是相同的0,只有在进行数值运算时才会体现出不同

    在ANSI  C中没有专门设置布尔类型,在进行逻辑运算时,将0值作为布尔值False,将非0值作为布尔值True

    在C#中,定义了Boolean类型,数值0转换为Boolean类型时得到的结果为False,非0张值转换为Boolean类型时得到的结果为True(面向对象语言一般定义了Boolean类型)

 

  3.除以0异常<此处再次提到OOP和一般编程的一些不同——异常的捕获处理>

    在C中如果直接将0作为除数运行编译,将产生一个严重的错误,导致程序不能继续运行,这不是我们所希望的,一个好的程序员应该考虑并处理程序中可能发生的各种异常,然后给客户一个友好的提示

    不过在ANSI  C中并没有提供异常捕获机制,因此需要手动执行过程,主动去判断,以避免这种严重异常

    而在异常捕获方面C++、C#就要方便得多,它们定义了很多异常(也包括DivideByZeroException异常),在我们的程序中可以用try……catch来捕获这些异常

 

posted @ 2017-11-20 12:24  一梦先知  阅读(1146)  评论(0编辑  收藏  举报