Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.185.199] |
|
Страницы: (42) [1] 2 3 ... 41 42 ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Во первых - причем тут чистый Си, вообще? Автор пишет на С++. Во вторых - инициализировать переменные хоть в Си, хоть в С++ это хороший совет, а вот ты дал как раз плохой совет. Что значит редко нужно? Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы." |
Сообщ.
#2
,
|
|
|
Заранее прошу у модераторов прощения и вынести, если что, эти разговоры в многошум.
Цитата KILLER @ Притом, что обычно начинают изучать Си, а потом только Си++. А значит, люди выучивают, что инициализация не нужна в обязоне, а потому при обрастаниями Си++знаниями, неправильно менять устои.Во первых - причем тут чистый Си, вообще? Автор пишет на С++. Цитата KILLER @ Я не давал советов.а вот ты дал как раз плохой совет. Цитата KILLER @ Это значит, что надо в принципе понимать для чего та или иная переменная, где она начнёт использоваться и не вводить лишний раз мерзкий код вида:Что значит редко нужно? int ar[20]={0}; float b[...]; getch(); for( int i=0; i<20; i++) a[i] = i*4; Эта тема была разделена из темы "Сумма каждого столбца матрицы." |
Сообщ.
#3
,
|
|
|
Цитата Славян @ Притом, что обычно начинают изучать Си, а потом только Си++. Что за бред? Цитата Славян @ А значит, люди выучивают, что инициализация не нужна в обязоне, а потому при обрастаниями Си++знаниями, неправильно менять устои. В С так же инициализация - является хорошим тоном. То что это не приводит к ошибкам компиляции, не о чем не говорит. Причем тут Си или С++? Если ты не инициализировал переменную - в ней будет содержаться мусор, а значит если ты вдруг начнешь работать с такой переменной, забыв ее инициализировать, то возможны проблемы. Инициализация переменных - сократит число этих проблем. Ты кем работаешь? Если бы ты работал программером на С/С++, ты бы понял как важно инициализировать переменные, потому что порой - это приводит к очень печальным последствиям и кучу потерянного времени. Так что не неси чепухи. Цитата Славян @ Это значит, что надо в принципе понимать для чего та или иная переменная, где она начнёт использоваться и не вводить лишний раз мерзкий код вида: А чем С++ в данном случае отличается, что в нем нужно инициализировать по твоему, а в Си не нужно? |
Сообщ.
#4
,
|
|
|
Цитата KILLER @ Это не бред. Всмотритесь внимательно в классику Hello, world'да.Что за бред? Цитата KILLER @ Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет". Так что это не чепуха.В С так же инициализация - является хорошим тоном. То что это не приводит к ошибкам компиляции, не о чем не говорит. Причем тут Си или С++? Если ты не инициализировал переменную - в ней будет содержаться мусор, а значит если ты вдруг начнешь работать с такой переменной, забыв ее инициализировать, то возможны проблемы. Инициализация переменных - сократит число этих проблем. Ты кем работаешь? Если бы ты работал программером на С/С++, ты бы понял как важно инициализировать переменные, потому что порой - это приводит к очень печальным последствиям и кучу потерянного времени. Так что не неси чепухи. Цитата KILLER @ В данном - ничем, так вы спросили про редкость, а я вам привёл простой Си'шный пример (по правде Си++, но не в этих тонкостях дело). А чем С++ в данном случае отличается, что в нем нужно инициализировать по твоему, а в Си не нужно? |
Сообщ.
#5
,
|
|
|
Цитата Славян @ Это не бред. Всмотритесь внимательно в классику Hello, world'да. Какого хеловорда? Там вообще переменных по сути нет, вывод одной строки. Цитата Славян @ Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет". Так что это не чепуха. Это полная чепуха, во всех ЯП как правило хороший тон инициализировать переменную, у тебя же все перевернуто с ног на голову, и в твоем понимании, это: Что в Си, что в С++ - если ты не инициализировал переменную(по крайней мере локальную) - у тебя в ней будет содержаться мусор, со всеми вытекающими, про указатели я вообще молчу. Так что не нужно сюда приплетать Си, он абсолютно не причем. Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы." |
Сообщ.
#6
,
|
|
|
Цитата KILLER @ Нет, именно причём! Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться. А инициализация их всех совершенно была ни к чему, т.к. и был код вида:Так что не нужно сюда приплетать Си, он абсолютно не причем. int ..., var46, ...; ... var46 = Integral(...); ... Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы." |
Сообщ.
#7
,
|
|
|
Цитата Славян @ Нет, именно причём! Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться. А инициализация их всех совершенно была ни к чему, т.к. и был код вида: Что это за бредокод? Ты про входные параметры или про что? Зачем инициализировать входные параметры? Я тебе еще раз повторяю, как для особо одаренных, во первых у автора код на С++, это видно не вооруженным взглядом, во вторых причем тут Си, который ты сюда приплел? В Си переменные не принято инициализировать и является дурным тоном? Иначе как ты можешь говорить - что "плохой совет инициализировать переменные" ? Ты с какой луны свалился? И что значит, вот эта фраза: Цитата Славян @ Если вы учитесь правильно (сначала Си, а потом Си++), то вас научат быть внимательным. А все забывчивости - это из разряда "сделал я ошибку или нет, внимательно написал или нет". ?? Как тебя можно научить внимательности, если даже профи с огромным стажем делают нелепые ошибки, типа присвоения вместо сравнения или раз два плюнуть подловится на использовании неинициализированной переменной. Ты несешь полную чушь. Во первых, ты Си изучал? Судя по всему ты неправильно учился и плохо его изучал, так как в своем коде, выкладываемом тут ты часто делаешь нелепые ошибки. Это означает что тебя внимательности не научили? Совет "всегда инициализируй переменные" - по определению не может быть плохим, в противном случае - это воспринимается как "в Си дурной тон инициализировать переменные". А это разве что у ламеров так. Цитата Славян @ в котором значение прямо заносилось в переменную, а потому излишнее её зануление весьма глупо. А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности. Такой синтаксис в Си в принципе отсуствует, это кусок кода судя по всему взят из brainfuck'а. Я на своей памяти и опыте не видел ни в Си, ни в С++подобного синтаксиса, где троеточие - переменная, потом еще какие то не понятные инструкции. Хватит нести чушь. Цитата Славян @ int ..., var46, ...; ... var46 = Integral(...); ... Сообщения были разделены в тему "Инициализировать или не инициализировать" Это сообщение было перенесено сюда или объединено из темы "Сумма каждого столбца матрицы." |
Сообщ.
#8
,
|
|
|
Цитата KILLER @ Это - типичнейший пример типичнейшей функции. Зачем вы так обзываете с пустого места код - непонятно.Что это за бредокод? Цитата KILLER @ Нет, не про входные, а про локальные.Ты про входные параметры или про что? Зачем инициализировать входные параметры? Цитата KILLER @ При том, что я вам пояснил на примере почему появилась необязательность инициализации.во вторых причем тут Си, который ты сюда приплел? Цитата KILLER @ Можно хоть один пример?Судя по всему ты неправильно учился и плохо его изучал, так как в своем коде, выкладываемом тут ты часто делаешь нелепые ошибки. Цитата KILLER @ Зачётно. Такой синтаксис в Си в принципе отсуствует, это кусок кода судя по всему взят из brainfuck'а. Я на своей памяти и опыте не видел ни в Си, ни в С++подобного синтаксиса, где троеточие - переменная, потом еще какие то не понятные инструкции. Хватит нести чушь. |
Сообщ.
#9
,
|
|
|
По сабжу: инициализировать. |
Сообщ.
#10
,
|
|
|
Цитата D_KEY @ Т.е. так? :По сабжу: инициализировать. int ..., var46=0, ...; ... var46 = Integral(...); ... |
Сообщ.
#11
,
|
|
|
Цитата Славян @ Необязательность инициализации и пошла из Си, т.к. там для больших=сложных=умных функций приходилось(!) заранее озаботиться всеми переменными, кои будут использоваться. ... А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности Откуда вся эта информация вообще? Других языков, кроме двух названных не было? Добавлено Цитата Славян @ Цитата D_KEY @ Т.е. так? :По сабжу: инициализировать. int ..., var46=0, ...; ... var46 = Integral(...); ... Я не понимаю, что может быть непонятно в слове "инициализировать". Да, например, так. Исключения разве что вида: my_type x; my_type_init(&x); Добавлено Цитата Славян @ А опосля пошёл Си++, в коем переменную и можно вводить с места её нужности. В Си ее можно было заводить в начале любого блока(не только функции). А сейчас в Си можно так же в любом месте, как и в С++. |
Сообщ.
#12
,
|
|
|
Цитата D_KEY @ В паскале и бэйсике, вроде бы, инициализация невозможна, а в ассемблере очень часто её опускают. Но мы вообще-то про Си и Си++.Откуда вся эта информация вообще? Других языков, кроме двух названных не было? Цитата D_KEY @ Всё понятно, просто мне захотелось на обычном примере увидеть точный ваш ответ. Переживал, что вы начнёте увиливать, но вы сказали прямо, что надо. Вас понял. Спсибо. Я не понимаю, что может быть непонятно в слове "инициализировать". Да, например, так. Добавлено Цитата D_KEY @ Никогда не знал этого. К сожалению, сомневаюсь в ваших словах. Надо нарыть Turbo C и проверить. Без обид, прошу. В Си ее можно было заводить в начале любого блока(не только функции). |
Сообщ.
#13
,
|
|
|
Цитата Славян @ Это - типичнейший пример типичнейшей функции. Зачем вы так обзываете с пустого места код - непонятно. Потому что это набор троеточий. Я его не понял. Цитата Славян @ При том, что я вам пояснил на примере почему появилась необязательность инициализации. На каком? Из вот этих троеточий? Цитата Славян @ Можно хоть один пример? Ну вот хотя бы: Ошибка при обработке строки (сообщение #3313882) поиск по сложным критериям в векторе (сообщение #3580268) Массивы (сообщение #3571816) Цитата Славян @ Зачётно. Ну а как еще назвать этот пример и троеточий? |
Сообщ.
#14
,
|
|
|
Цитата Славян @ Цитата D_KEY @ В паскале и бэйсике, вроде бы, инициализация невозможна, а в ассемблере очень часто её опускают.Откуда вся эта информация вообще? Других языков, кроме двух названных не было? Вот потому я скорее поверю, что привычка не инициализировать идет от паскаля. Кстати, надо бы узнать, не обнулял ли он переменные сам. Цитата Цитата D_KEY @ Никогда не знал этого. К сожалению, сомневаюсь в ваших словах. Надо нарыть Turbo C и проверить. Без обид, прошу.В Си ее можно было заводить в начале любого блока(не только функции). Лучше посмотреть у старого K&R, а потом и в ansi C. Turbo C мог быть некорректным |
Сообщ.
#15
,
|
|
|
Цитата D_KEY @ Проверил. Всё как вы говорили. Можно! Turbo C мог быть некорректным Добавлено Цитата KILLER @ Там нет никакой ошибки! Я показал, что во втором цикле надо и i ограничивать, а схема циклов была взята у автора. Ну вот хотя бы: Ошибка при обработке строки (сообщение #3313882) Добавлено Цитата KILLER @ Это - Си++, я действительно его отвратительно знаю. поиск по сложным критериям в векторе (сообщение #3580268) Добавлено Цитата KILLER @ Там (если вы про забывчивость введения, определения переменной) - забытие не сказать, что и ошибка. Я их ежедневно почти десятками делаю. Это просто от скорости. Фи. Массивы (сообщение #3571816) |