实用主义程序员练习19



摘自The Pragmatic Programmer的练习19。

一个快速的现实检查。哪些"不可能"的事情会发生?:

  1. 少于28天的月份

  2. 统计("。",&sb) == -1(即无法访问当前目录)

  3. c++: a = 2; b = 3; if (a + b != 5) exit(1);

  4. 内角为sum ≠180°

  5. 没有60秒的一分钟

  6. Java: (a + 1) <= a

我有一些答案,但我不认为我的答案是"正确的"(从这个意义上说,这是作者在写问题时所想的答案)。

这是我的尝试:

1752年9月

2) ——我想我们可以跳过这个,不理解这个问题——

3)我不知道c++,但它是否与线程和volatile变量(如Java)有关?

4)不可能. .

5)由于出现闰秒

6) double a = 100000000000000001d;

我想知道有没有人知道这些问题的正确的答案?

3:如果a和b是类类型,则重载操作符+可以做任何操作(或重载赋值操作符,或operator !=,甚至隐式转换操作符)。

4:曲面上的三角形内角和不为180。

6: Overflow in a.

我的意思是,这些问题的重点是要证明很多"不可能"的事情确实发生了,当你非常防御性地编程时,你可能不仅仅是偏执。

2很容易发生。如果你在目录中删除目录,然后执行一些操作。许多程序实际上处理这个问题。

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

最新更新