Упражнение 19 Прагматического Программиста - PullRequest
12 голосов
/ 04 ноября 2011

Это взято из Упражнения 19 Прагматического Программиста.

Быстрая проверка реальности.Какие из этих «невозможных» вещей могут произойти:

  1. Месяц с менее чем 28 днями

  2. stat (".", & Sb)== -1 (то есть не может получить доступ к текущему каталогу)

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

  4. Треугольник свнутренняя угловая сумма ≠ 180 °

  5. Минута без 60 секунд

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

У меня есть несколько ответов, но я не думаю, что мои ответы "правильные" (в том смысле, что именно об этом думали авторы, когда писали вопрос).

Это моя попытка:

1) сентябрь 1752

2) - я думаю, что мы можем пропустить это, не понимая вопрос--

3) Я не знаю C ++, но связано ли это с многопоточностью и переменными переменными (например, Java)?

4) невозможно ..

5) В связи с появлением високосных секунд

6) double a = 100000000000000001d;

Мне было интересно, кто-нибудь знает правильный ответ на эти вопросы?

Ответы [ 3 ]

13 голосов
/ 04 ноября 2011

3: Если a и b относятся к типу класса, то перегруженный оператор + может сделать что угодно (или перегруженный оператор присваивания, или оператор! =, Или даже неявный оператор преобразования в этом отношении).

4: Треугольник на изогнутой поверхности не имеет суммы внутренних углов 180.

6: Переполнение в.

Цель вопросов - ИМХО продемонстрироватьчто на самом деле происходит много «невозможных» вещей, и вы можете быть не просто параноиком, когда программируете очень оборонительно.

6 голосов
/ 04 ноября 2011

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
3 голосов
/ 04 ноября 2011

nr 5 происходит в случае високосных секунд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...