На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (42) [1] 2 3 ...  41 42  ( Перейти к последнему сообщению )  
> Инициализировать или не инициализировать , it's the question
    Цитата Славян @
    Довольно плохой совет, т.к. в чистом Си такое редко надо. :blush:

    Во первых - причем тут чистый Си, вообще? Автор пишет на С++.
    Во вторых - инициализировать переменные хоть в Си, хоть в С++ это хороший совет, а вот ты дал как раз плохой совет. Что значит редко нужно?

    Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы."
      Заранее прошу у модераторов прощения и вынести, если что, эти разговоры в многошум. :blush:
      Цитата KILLER @
      Во первых - причем тут чистый Си, вообще? Автор пишет на С++.
      Притом, что обычно начинают изучать Си, а потом только Си++. А значит, люди выучивают, что инициализация не нужна в обязоне, а потому при обрастаниями Си++знаниями, неправильно менять устои.
      Цитата KILLER @
      а вот ты дал как раз плохой совет.
      Я не давал советов.
      Цитата KILLER @
      Что значит редко нужно?
      Это значит, что надо в принципе понимать для чего та или иная переменная, где она начнёт использоваться и не вводить лишний раз мерзкий код вида:
      ExpandedWrap disabled
        int ar[20]={0};
        float b[...];
        getch();
        for( int i=0; i<20; i++) a[i] = i*4;


      Эта тема была разделена из темы "Сумма каждого столбца матрицы."
        Цитата Славян @
        Притом, что обычно начинают изучать Си, а потом только Си++.

        Что за бред?

        Цитата Славян @
        А значит, люди выучивают, что инициализация не нужна в обязоне, а потому при обрастаниями Си++знаниями, неправильно менять устои.

        В С так же инициализация - является хорошим тоном. То что это не приводит к ошибкам компиляции, не о чем не говорит. Причем тут Си или С++? Если ты не инициализировал переменную - в ней будет содержаться мусор, а значит если ты вдруг начнешь работать с такой переменной, забыв ее инициализировать, то возможны проблемы. Инициализация переменных - сократит число этих проблем. Ты кем работаешь? Если бы ты работал программером на С/С++, ты бы понял как важно инициализировать переменные, потому что порой - это приводит к очень печальным последствиям и кучу потерянного времени. Так что не неси чепухи.

        Цитата Славян @
        Это значит, что надо в принципе понимать для чего та или иная переменная, где она начнёт использоваться и не вводить лишний раз мерзкий код вида:

        А чем С++ в данном случае отличается, что в нем нужно инициализировать по твоему, а в Си не нужно?
        Сообщение отредактировано: KILLER -
          Цитата KILLER @
          Что за бред?
          Это не бред. Всмотритесь внимательно в классику Hello, world'да.
          Цитата KILLER @
          В С так же инициализация - является хорошим тоном. То что это не приводит к ошибкам компиляции, не о чем не говорит. Причем тут Си или С++? Если ты не инициализировал переменную - в ней будет содержаться мусор, а значит если ты вдруг начнешь работать с такой переменной, забыв ее инициализировать, то возможны проблемы. Инициализация переменных - сократит число этих проблем. Ты кем работаешь? Если бы ты работал программером на С/С++, ты бы понял как важно инициализировать переменные, потому что порой - это приводит к очень печальным последствиям и кучу потерянного времени. Так что не неси чепухи.
          Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет". Так что это не чепуха.
          Цитата KILLER @
          А чем С++ в данном случае отличается, что в нем нужно инициализировать по твоему, а в Си не нужно?
          В данном - ничем, так вы спросили про редкость, а я вам привёл простой Си'шный пример (по правде Си++, но не в этих тонкостях дело).
            Цитата Славян @
            Это не бред. Всмотритесь внимательно в классику Hello, world'да.

            Какого хеловорда? Там вообще переменных по сути нет, вывод одной строки.

            Цитата Славян @
            Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет". Так что это не чепуха.

            Это полная чепуха, во всех ЯП как правило хороший тон инициализировать переменную, у тебя же все перевернуто с ног на голову, и в твоем понимании, это:
            Цитата Славян @
            Довольно плохой совет, т.к. в чистом Си такое редко надо.

            Что в Си, что в С++ - если ты не инициализировал переменную(по крайней мере локальную) - у тебя в ней будет содержаться мусор, со всеми вытекающими, про указатели я вообще молчу. Так что не нужно сюда приплетать Си, он абсолютно не причем.

            Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы."
              Цитата KILLER @
              Так что не нужно сюда приплетать Си, он абсолютно не причем.
              Нет, именно причём! Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться. А инициализация их всех совершенно была ни к чему, т.к. и был код вида:
              ExpandedWrap disabled
                int ..., var46, ...;
                ...
                var46 = Integral(...);
                ...
              в котором значение прямо заносилось в переменную, а потому излишнее её зануление весьма глупо. А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности.

              Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы."
                Цитата Славян @
                Нет, именно причём! Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться. А инициализация их всех совершенно была ни к чему, т.к. и был код вида:

                Что это за бредокод? Ты про входные параметры или про что? Зачем инициализировать входные параметры? 8-) Я тебе еще раз повторяю, как для особо одаренных, во первых у автора код на С++, это видно не вооруженным взглядом, во вторых причем тут Си, который ты сюда приплел? В Си переменные не принято инициализировать и является дурным тоном? Иначе как ты можешь говорить - что "плохой совет инициализировать переменные" ? Ты с какой луны свалился?

                И что значит, вот эта фраза:
                Цитата Славян @
                Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет".

                ??
                Как тебя можно научить внимательности, если даже профи с огромным стажем делают нелепые ошибки, типа присвоения вместо сравнения или раз два плюнуть подловится на использовании неинициализированной переменной.
                Ты несешь полную чушь. Во первых, ты Си изучал? Судя по всему ты неправильно учился и плохо его изучал, так как в своем коде, выкладываемом тут ты часто делаешь нелепые ошибки. Это означает что тебя внимательности не научили? Совет "всегда инициализируй переменные" - по определению не может быть плохим, в противном случае - это воспринимается как "в Си дурной тон инициализировать переменные". А это разве что у ламеров так.

                Цитата Славян @
                в котором значение прямо заносилось в переменную, а потому излишнее её зануление весьма глупо. А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности.

                Такой синтаксис в Си в принципе отсуствует, это кусок кода судя по всему взят из brainfuck'а. Я на своей памяти и опыте не видел ни в Си, ни в С++подобного синтаксиса, где троеточие - переменная, потом еще какие то не понятные инструкции. Хватит нести чушь.
                Цитата Славян @

                int ..., var46, ...;
                ...
                var46 = Integral(...);
                ...


                Сообщения были разделены в тему "Инициализировать или не инициализировать"

                Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы."
                  Цитата KILLER @
                  Что это за бредокод?
                  Это - типичнейший пример типичнейшей функции. Зачем вы так обзываете с пустого места код - непонятно.
                  Цитата KILLER @
                  Ты про входные параметры или про что? Зачем инициализировать входные параметры?
                  Нет, не про входные, а про локальные.
                  Цитата KILLER @
                  во вторых причем тут Си, который ты сюда приплел?
                  При том, что я вам пояснил на примере почему появилась необязательность инициализации.
                  Цитата KILLER @
                  Судя по всему ты неправильно учился и плохо его изучал, так как в своем коде, выкладываемом тут ты часто делаешь нелепые ошибки.
                  Можно хоть один пример?
                  Цитата KILLER @
                  Такой синтаксис в Си в принципе отсуствует, это кусок кода судя по всему взят из brainfuck'а. Я на своей памяти и опыте не видел ни в Си, ни в С++подобного синтаксиса, где троеточие - переменная, потом еще какие то не понятные инструкции. Хватит нести чушь.
                  :lol: Зачётно. :crazy:
                    :facepalm:

                    По сабжу: инициализировать.
                      Цитата D_KEY @
                      По сабжу: инициализировать.
                      Т.е. так? :
                      ExpandedWrap disabled
                        int ..., var46=0, ...;
                         ...
                         var46 = Integral(...);
                         ...
                        Цитата Славян @
                        Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться.
                        ...
                        А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности

                        Откуда вся эта информация вообще? Других языков, кроме двух названных не было?

                        Добавлено
                        Цитата Славян @
                        Цитата D_KEY @
                        По сабжу: инициализировать.
                        Т.е. так? :
                        ExpandedWrap disabled
                          int ..., var46=0, ...;
                           ...
                           var46 = Integral(...);
                           ...

                        Я не понимаю, что может быть непонятно в слове "инициализировать". Да, например, так.
                        Исключения разве что вида:
                        ExpandedWrap disabled
                          my_type x;
                          my_type_init(&x);


                        Добавлено
                        Цитата Славян @
                        А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности.

                        В Си ее можно было заводить в начале любого блока(не только функции). А сейчас в Си можно так же в любом месте, как и в С++.
                          Цитата D_KEY @
                          Откуда вся эта информация вообще? Других языков, кроме двух названных не было?
                          В паскале и бэйсике, вроде бы, инициализация невозможна, а в ассемблере очень часто её опускают. Но мы вообще-то про Си и Си++.
                          Цитата D_KEY @
                          Я не понимаю, что может быть непонятно в слове "инициализировать". Да, например, так.
                          Всё понятно, просто мне захотелось на обычном примере увидеть точный ваш ответ. Переживал, что вы начнёте увиливать, но вы сказали прямо, что надо. Вас понял. Спсибо.

                          Добавлено
                          Цитата D_KEY @
                          В Си ее можно было заводить в начале любого блока(не только функции).
                          Никогда не знал этого. К сожалению, сомневаюсь в ваших словах. Надо нарыть Turbo C и проверить. Без обид, прошу.
                            Цитата Славян @
                            Это - типичнейший пример типичнейшей функции. Зачем вы так обзываете с пустого места код - непонятно.

                            Потому что это набор троеточий. Я его не понял. :-?

                            Цитата Славян @
                            При том, что я вам пояснил на примере почему появилась необязательность инициализации.

                            На каком? Из вот этих троеточий?

                            Цитата Славян @
                            Можно хоть один пример?

                            Ну вот хотя бы:
                            Ошибка при обработке строки (сообщение #3313882)
                            поиск по сложным критериям в векторе (сообщение #3580268)
                            Массивы (сообщение #3571816)

                            Цитата Славян @
                            :lol: Зачётно. :crazy:

                            Ну а как еще назвать этот пример и троеточий? :-?
                              Цитата Славян @
                              Цитата D_KEY @
                              Откуда вся эта информация вообще? Других языков, кроме двух названных не было?
                              В паскале и бэйсике, вроде бы, инициализация невозможна, а в ассемблере очень часто её опускают.

                              Вот потому я скорее поверю, что привычка не инициализировать идет от паскаля. Кстати, надо бы узнать, не обнулял ли он переменные сам.

                              Цитата
                              Цитата D_KEY @
                              В Си ее можно было заводить в начале любого блока(не только функции).
                              Никогда не знал этого. К сожалению, сомневаюсь в ваших словах. Надо нарыть Turbo C и проверить. Без обид, прошу.

                              Лучше посмотреть у старого K&R, а потом и в ansi C. Turbo C мог быть некорректным :-?
                                Цитата D_KEY @
                                Turbo C мог быть некорректным
                                Проверил. Всё как вы говорили. Можно! :thanks:

                                Добавлено
                                Цитата KILLER @
                                Ну вот хотя бы:
                                Ошибка при обработке строки (сообщение #3313882)
                                Там нет никакой ошибки! Я показал, что во втором цикле надо и i ограничивать, а схема циклов была взята у автора. :angry:

                                Добавлено
                                Цитата KILLER @
                                поиск по сложным критериям в векторе (сообщение #3580268)
                                Это - Си++, я действительно его отвратительно знаю. :blush:

                                Добавлено
                                Цитата KILLER @
                                Массивы (сообщение #3571816)
                                Там (если вы про забывчивость введения, определения переменной) - забытие не сказать, что и ошибка. Я их ежедневно почти десятками делаю. Это просто от скорости. Фи. :no-sad:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (42) [1] 2 3 ...  41 42


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0675 ]   [ 16 queries used ]   [ Generated: 19.04.24, 01:06 GMT ]