Моя девушка сказала мне, что программирование для меня важнее, чем она. Я ответил ей, что в кругу моих интересов она номер один. Она осталась довольна.
отсчет начинается с нуля?
отсчет начинается с нуля?
в массивах - да
а вдруг он на паскале пишет. да не, бред какой то....
Или матлабом балуется. Короче, шутка - дерьмо, аффтар - эникейщик.
нуи некоторые языки позволяют и переопределить отсчет, если что...
Да эта херня вообще раздражает, перетянули особенность низкоуровневого языка, где индексация от нуля смотрелась логично и органично, в языки высокого уровня, нахера вот только, непонятно.
Хотя, возможно для этого есть какие-то другие причины
Это смотря какой паскаль и как задашь массив.
Да и никто не мешает в любых ЯП вести отсчет с любого индекса. Это все шляпа, привязанная к предпочтениям конкретного говнокодера или процессу оптимизации кода. В некоторых случаях дешевле потерять немного памяти, чем производить вычсисления смещения.
опять же, если говорить про массивы не маловажную роль играет тот факт типов данных указанных в этом массиве.
Ладно - скалярные величины. Хер с ними. И то, если это говнокодер, то он не будет инициализировать массив перед использованием, и на момент обращения в элементах может быть всякая рандомная хрень.
А если там массив указателей. И еще неизвестно, мож у него 0 индекс вообще всегда null.
Так что - не все так однозначно.
Всей правды про массивы и конкретного говнокодера мы никогда не узнаем, пока не изучим его код.
Да и никто не мешает в любых ЯП вести отсчет с любого индекса. Это все шляпа, привязанная к предпочтениям конкретного говнокодера или процессу оптимизации кода. В некоторых случаях дешевле потерять немного памяти, чем производить вычсисления смещения.
опять же, если говорить про массивы не маловажную роль играет тот факт типов данных указанных в этом массиве.
Ладно - скалярные величины. Хер с ними. И то, если это говнокодер, то он не будет инициализировать массив перед использованием, и на момент обращения в элементах может быть всякая рандомная хрень.
А если там массив указателей. И еще неизвестно, мож у него 0 индекс вообще всегда null.
Так что - не все так однозначно.
Всей правды про массивы и конкретного говнокодера мы никогда не узнаем, пока не изучим его код.
да в том же пайтоне первая буква строки будет string_variable[0]
Это тривиально, ведь "строка" это "цепочка" символов (массив), заканчивающийся символом x00
Не всегда. Есть варианты когда в первом байте хранится длинна остальной строки, это позволяет в самой строке и хранить тот самый x00 байт. А есть вариант с двойным окончанием x00, почти из тех же соображений.
Согласен. Ты прав
А в базах данных же айтишники де всегда целое число и начинаются с 1?
*айдишники
нет, не всегда число, не всегда с 1, и даже не всегда это один столбец
в некоторых языках [1] - это массив из одного элементадушнила>
Жена программиста оставила мужа рядом с машиной сторожить пакеты:
-Запомни, их ровно десять.
Возвращается. Муж ей в ответ:
-Здесь только 9 пакетов!
-Как??!!
-Ну смотри: 0, 1, 2...
-Запомни, их ровно десять.
Возвращается. Муж ей в ответ:
-Здесь только 9 пакетов!
-Как??!!
-Ну смотри: 0, 1, 2...
Херовый программист. Все знают, что длина массива на единицу больше последнего индекса
анекдоту 20 лет в обед, так что вопросы не ко мне
Да какая разница на чем кто пишет, если в этом бородатом анекдоте ссылка на индекс, который не является номером. Индексируй хоть с -10, элемент [-10] будет первым по порядковому номеру. Перевод косой.
ну, переводить "ты у меня под индексом один" как-то совсем криво
Ага, и array - не круг, а массив. Из-за этого слова шутку становится тяжело перевести. По-английски звучит вполне естественно. По-русски слово "массив" никто не употребил бы в этом случае.
Что мешает сказать список? По сути то же самое - "В списке моих интересов ты на первом месте".
А то, что массив и список - разные вещи. Array и list соответственно.
сча вам верстальщики расскажут, что списки бывают не только нумерованными..
Смотря с какого боку посмотреть, реализации разные, но это все абстракция для упорядоченного множества (или как сказал балабака) нумерованного списка, и в контексте твита подойдут оба.
А вот и нихуя. В списки не могут быть вставлены разнотипные объекты, как, например, девушка и программирование. Это вообще основное различие списков и массивов.
Основное различие списков и массивов в том, как они расположены в памяти. Разверни мысль про типы объектов, а то кажется что ты несешь бред
я бы вот так перевел:
"Я сказал ей, что в моем наборе интересов она на первом месте."
"Я сказал ей, что в моем наборе интересов она на первом месте."
а что если [0] пустое? можно ли в текущем контексте интересов считать, что [1] это первое?
Короткий ответ: нет, нельзя.
Длинный ответ: в упорядоченном множестве (списке, массиве) есть такое понятие как "элемент множества". Этот элемент объединяет в себе два параметра: номер (позиция в множестве) и значение. Когда мы говорим что [0] - пустое, это значит что элемент с номером 0 существует, но его значение отсутствует. Логично, что сам факт существования элемента с номером 0 не позволяет нам считать элемент под номером 1 первым.
Длинный ответ: в упорядоченном множестве (списке, массиве) есть такое понятие как "элемент множества". Этот элемент объединяет в себе два параметра: номер (позиция в множестве) и значение. Когда мы говорим что [0] - пустое, это значит что элемент с номером 0 существует, но его значение отсутствует. Логично, что сам факт существования элемента с номером 0 не позволяет нам считать элемент под номером 1 первым.
Старая шутка:
Однажды ты спросишь меня, что для меня на первом месте: ты или программирование? Я отвечу тебе, что программирование. И ты уйдёшь, так и не узнав, что ты для меня на нулевом месте.
Однажды ты спросишь меня, что для меня на первом месте: ты или программирование? Я отвечу тебе, что программирование. И ты уйдёшь, так и не узнав, что ты для меня на нулевом месте.
немного проебана шутка в переводе. Не в кругу интересов, а в массиве, отсчет элементов в массиве начинается с 0, потому что это индекс смещения, а не порядковый номер.
Есть тут железнячные программисты? Подскажите, когда поднимается бит RC1, что будет с битом RC2 ? Он останется поднят или в ноль свалится? Это xc8 компилятор
while(1) {
__delay_ms(1000);
PORTCbits.RC2 = 1;
__delay_ms(1000);
PORTCbits.RC1 = 1;
__delay_ms(1000);
PORTCbits.RC0 = 1;
if(PORTAbits.RA1 == 0) PORTC = 0;
}
while(1) {
__delay_ms(1000);
PORTCbits.RC2 = 1;
__delay_ms(1000);
PORTCbits.RC1 = 1;
__delay_ms(1000);
PORTCbits.RC0 = 1;
if(PORTAbits.RA1 == 0) PORTC = 0;
}
Во-первых, в таких вопросах стоит указывать не только компилятор, но и микроконтроллер под который программируешь. Я так понимаю, у тебя какой-то вариант PIC.
С точки зрения компилятора C, PORTCbits.RCx = 1; превращается в следующий набор действий:
- прочитать PORTC
- установить бит номер x
- записать в PORTC
Если бы PORTC был обычной переменной, то значения остальных битов сохранялись бы, потому что чтение возвращает результат предыдущей записи.
Проблема в том, что PORTC - не обычная переменная, а физическое устройство. Чтения из PORTC не обязаны возвращать то, что ты туда записывал! Конкретно PORTC при чтении выдаёт уровни напряжения на ногах микросхемы - вне зависимости от того, чем эти уровни вызваны:
- если ноги настроены на вход, то запись в порт никак не влияет на состояние ног, и соответственно, не влияет на последующие чтения.
- мощная нагрузка на ногах может просадить напряжение, так что чтение из порта вернёт не то, что ты записывал.
- может быть задержка между записью в порт и реальным изменением. Слишком скорое чтение может увидеть старое состояние.
Совет: лучше держи внутреннюю копию порта, модифицируй её и копируй в порт целиком. Чтение из порта используй только для ног, настроенных на вход.
С точки зрения компилятора C, PORTCbits.RCx = 1; превращается в следующий набор действий:
- прочитать PORTC
- установить бит номер x
- записать в PORTC
Если бы PORTC был обычной переменной, то значения остальных битов сохранялись бы, потому что чтение возвращает результат предыдущей записи.
Проблема в том, что PORTC - не обычная переменная, а физическое устройство. Чтения из PORTC не обязаны возвращать то, что ты туда записывал! Конкретно PORTC при чтении выдаёт уровни напряжения на ногах микросхемы - вне зависимости от того, чем эти уровни вызваны:
- если ноги настроены на вход, то запись в порт никак не влияет на состояние ног, и соответственно, не влияет на последующие чтения.
- мощная нагрузка на ногах может просадить напряжение, так что чтение из порта вернёт не то, что ты записывал.
- может быть задержка между записью в порт и реальным изменением. Слишком скорое чтение может увидеть старое состояние.
Совет: лучше держи внутреннюю копию порта, модифицируй её и копируй в порт целиком. Чтение из порта используй только для ног, настроенных на вход.
Да, это PIC. Подключил заведомо исправный микроконтроллер и все заработало. Конечно бит остается в 1, если его никто не трогает. Продал мне китаец с алика глючных микрух, падла
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!