Форум — Development Объявление в условии в С++ 0 0 Почему так можно: if (long res = sysconf(_SC_XOPEN_VERSION) ) а так нельзя: if ((long res = sysconf(_SC_XOPEN_VERSION)) < 0 ) ? Ссылка
Ответ на: комментарий от jtootf 22.10.08 16:43:30 MSK > встречный вопрос: а зачем так нужно? Это великая магия дзэн и капча brayed как бэ подтверждает это anonymous (22.10.08 17:11:47 MSK) Ссылка
Ответ на: комментарий от jtootf 22.10.08 16:43:30 MSK Дабы во внешнем блоке не появлялось не нужной там переменной, собственно за тем же за чем разрешено и первое объявление. anonymous (22.10.08 17:21:03 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 22.10.08 17:21:03 MSK >Дабы во внешнем блоке не появлялось не нужной там переменной ... { long res = sysconf(_SC_XOPEN_VERSION); if (res < 0 ) { } } ... куда как читаемей jtootf ★★★★★ (22.10.08 17:33:20 MSK) Ссылка
А чем по твоему является результат выражения long res = sysconf(_SC_XOPEN_VERSION)?? s0L ★ (22.10.08 22:00:11 MSK) Показать ответ Ссылка
потому что (long res = sysconf(_SC_XOPEN_VERSION)) не возращает значения generatorglukoff ★★ (22.10.08 23:32:42 MSK) Ссылка
Ответ на: комментарий от s0L 22.10.08 22:00:11 MSK > А чем по твоему является результат выражения long res = sysconf(_SC_XOPEN_VERSION)?? ну это как раз не проблема -- присваивание то возвращает значение, почему бы и инициализации не возвращать?? dilmah ★★★★★ (22.10.08 23:53:49 MSK) Показать ответ Ссылка
Ответ на: комментарий от dilmah 22.10.08 23:53:49 MSK дело видимо в том, что объявлять переменные в if() или while() можно только прямым путём: if(int a = geta()) ... Дополнительные скобки затеняют эту конструкцию, а объявлять переменные внутри скобок нельзя. (6.4 Selection statements) alex_custov ★★★★★ (23.10.08 01:16:46 MSK) Ссылка
Нельзя потому что стандарт не позволяет. Стандарт не позволяет, потому что C некрасивый язык. Legioner ★★★★★ (23.10.08 04:12:03 MSK) Ссылка
А, кстати, откуда ты взял, что нельзя? Я стотыщпицот раз делал так: if((variable=function(parameter)) == 0) { ; } one_more_hokum ★★★ (23.10.08 10:17:24 MSK) Показать ответ Ссылка
Ответ на: комментарий от one_more_hokum 23.10.08 10:17:24 MSK Читать научись. Нельзя *объявлять*. А присваивать даже в C89 можно. anonymous (23.10.08 15:55:00 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 23.10.08 15:55:00 MSK А, тьху, действительно читать разучился. Позор мне! one_more_hokum ★★★ (24.10.08 08:25:05 MSK) Ссылка