Java 实用程序员练习19
这摘自实用程序员的练习19 一个快速的现实检查。以下哪些“不可能”的事情会发生Java 实用程序员练习19,java,language-agnostic,Java,Language Agnostic,这摘自实用程序员的练习19 一个快速的现实检查。以下哪些“不可能”的事情会发生 少于28天的一个月 stat(“.”,&sb)=-1(即,无法访问当前目录) 在C++中:a=2;b=3;如果(a+b!=5)退出(1) 具有内角和的三角形≠ 180° 没有60秒的一分钟 在Java中:(a+1)3:如果a和b是类类型,那么重载操作符+可以做任何事情(或者重载赋值操作符,或者操作符!=,甚至是隐式转换操作符) 4:曲面上的三角形的内角和不等于180 6:a中溢出 这些问题的重点是,如何证明许多“不可
a=2;b=3;如果(a+b!=5)退出(1)代码>
(a+1)3:如果a和b是类类型,那么重载操作符+可以做任何事情(或者重载赋值操作符,或者操作符!=,甚至是隐式转换操作符)
4:曲面上的三角形的内角和不等于180
6:a中溢出
这些问题的重点是,如何证明许多“不可能”的事情确实发生了,而且当你在进行防御性编程时,你可能不仅仅是偏执狂。2
很容易发生。e、 g.如果您在目录中删除目录,然后执行某些操作。许多程序实际上都能处理这个问题
noufal@sanitarium% ls
noufal@sanitarium% cd
noufal@sanitarium% mkdir /tmp/foo
noufal@sanitarium% cd /tmp/foo
noufal@sanitarium% touch x
noufal@sanitarium% ls
x
noufal@sanitarium% rm -Rf /tmp/foo
noufal@sanitarium% ls
noufal@sanitarium% touch x
touch: cannot touch `x': No such file or directory
nr 5发生在的情况下,他们不是在章节/书的末尾提供答案吗?让你猜猜似乎有点残忍…4不是不可能的-请不要讨论球面几何,但4不是不可能的:事实上,由于空间是弯曲的,我们现实中没有一个三角形有180º。2如果程序当前目录上的权限被更改(或被完全删除),则可能发生这种情况。3.如果int a
为Integer,则可以通过运算符重载退出。如果int a
为整数,则(a+1)
的计算结果为true
。编辑:啊,等等,MadKeithV已经提到了……赋值运算符和隐式转换构造函数呢?@tokage-正确,我把它们添加到了我的答案中。我很高兴在最初提出的问题中没有任何逗号:)3更简单的int a;int&b=a;关于这一点,虽然这是一个很好和有用的观点,但我觉得对位法同样重要。根据语言规范,没有什么比处理实际上不可能的“不可能的”事情时费力地处理被复杂度污染的代码更令人沮丧的了。,