这摘自 The Pragmatic Programmer 的练习 19。
快速现实检查。以下哪些“不可能”的事情会发生?:
少于 28 天的月份
stat(".",&sb) == -1(即无法访问当前目录)
在 C++ 中:
a = 2; b = 3; if (a + b != 5) exit(1);
内角和≠180°的三角形
没有 60 秒的一分钟
在 Java 中:
(a + 1) <= a
我有一些答案,但我不认为我的答案是“正确的”(从某种意义上说,这是作者在写问题时所考虑的答案)。
这是我的尝试:
2) --I think we can skip this, not understanding the question--
3) I don't know C++, but is it something to do with threading and volatile variables (like Java) ?
4) impossible..
5) Due to occurence of leap Seconds
6)
double a = 100000000000000001d;
我想知道是否有人知道这些问题的正确答案?
最佳答案
3:如果 a 和 b 是类类型,那么重载的 operator+ 可以做任何事情(或重载的赋值运算符,或运算符 !=,甚至是隐式转换运算符)。
4:曲面上的三角形内角和不是180。
6:a中溢出。
问题的重点是恕我直言,以证明很多“不可能”的事情确实发生了,并且当您非常防御性地编程时,您可能不仅仅是偏执狂。
关于java - 实用程序员的练习 19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009126/