Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/60: Рейтинг темы: голосов - 60, средняя оценка - 4.72
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701

Читаю книгу

14.08.2021, 19:12. Показов 14387. Ответов 222
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда пишу, то что читаю, запоминаю лучше.

Читаю книгу Курс программирования на языке СИ. Сергей Фомин, Вадим Подбельский
Есть такое предложение там:
Идентификаторы могут иметь любую длину, но компилятор учитывает не более 31 символа от начала идентификатора. В некоторых
компиляторах это ограничение еще более жесткое, и учитываются
только первые 8 символов любого идентификатора. В этом случае
идентификаторы NUMBER_OF_ROOM и NUMBER_OF_TEST
в программе будут неразличимы.
-----------------------------------------------
Непонятно что они имеют в виду под идентификатором? Возможно имена присваеваемые переменным?
Эти имена присваемые переменным не могут превышать 31 символ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2021, 19:12
Ответы с готовыми решениями:

Читаю из файла, scanf, число с лидирующим нулем
На VS 2010 #include<stdio.h> void main() { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); ...

Читаю книгу, нужны задания
Начал читать Троелсена. Вроде все понятно и доступно объясняет, но программирование- это прежде всего практика. Вот прочитал я главу, про...

Читаю книгу,есть то чего я не понял)
Привет,форум!) Я читаю книгу "Шилдт Г. С++ Базовый курс (3-е издание, 2010)" Свежее не нашёл,но когда я пытаюсь использовать или...

222
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
18.08.2021, 21:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от koeltrad Посмотреть сообщение
Как это записать правильно? char arr[]={'H','e','l','l','o'};
Чтоб получилась строка.
C
1
2
3
4
5
6
char arr[] = { 'H', 'e', 'l', 'l', 'o', 0 };
char arr[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char arr[6] = { 'H', 'e', 'l', 'l', 'o' };
char arr[] = "Hello";
char arr[] = { "Hello" };
// и т.д.
Все эти варианты эквивалентны (с точки зрения типа и содержимого arr).
1
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
18.08.2021, 21:29
TheCalligrapher, а вот по поводу строки #3 char arr[6] = { 'H', 'e', 'l', 'l', 'o' };
Не может оказаться в последнем элементе мусор, вместо нуля?
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 21:33  [ТС]
Кстати да. Здесь идёт рассчёт на то что тип спецификатора это %s и он не отобразит 0? Сомнительное решение нет?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
18.08.2021, 21:34
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Не может оказаться в последнем элементе мусор, вместо нуля?
Нет. Если не хватает инициализаторов, то оставшиеся элементы заполняются нулями.
3
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 21:40  [ТС]
Хотя 0 наверное это какой то особенный символ для спецификатора %s.

Добавлено через 4 минуты
И если указать последней цифрой 0, то строка заканчивается. Спецификатор %s понимает что надо заканчивать строку.
Даже один из примеров есть где последним символом 0 идёт через запятую char arr[] = { 'H', 'e', 'l', 'l', 'o', 0 };
А здесь указывается что 0 это последний символ путём задания количества символов в массиве char arr[6] = { 'H', 'e', 'l', 'l', 'o' }; 5 букв и последний ноль
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
18.08.2021, 21:42
Цитата Сообщение от koeltrad Посмотреть сообщение
Сомнительное решение нет?
Есть множество способов реализации хранения строки в памяти.
Один из них - null-terminated byte string (NTBS). Именно он и используется в C.
В конце строки NTBS всегда имеется завершающий нулевой символ.
По этому символу можно идентифицировать конец строки.
Все стандартные функции работают именно с NTBS.
У этого способа есть как плюсы, так и минусы.

Цитата Сообщение от koeltrad Посмотреть сообщение
Хотя 0 наверное это какой то особенный символ для спецификатора %s.
Если формат %s, то printf считает переданный аргумент указателем на строку NTBS, поэтому будет выводить всё, пока не встретит нулевой символ - конец строки.
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 22:00  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Если не хватает инициализаторов, то оставшиеся элементы заполняются нулями.
char arr[]={'H','e','l','l','o',000000000000000000 };
Поэтому сработает даже это char arr[55]={'H','e','l','l','o'};
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
18.08.2021, 22:00
Цитата Сообщение от Croessmah Посмотреть сообщение
Если не хватает инициализаторов, то оставшиеся элементы заполняются нулями.
А ведь это я знал, просто запутался. Интовые массивы ведь сам так же обнулял int x[100]={0};
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
18.08.2021, 22:03
Цитата Сообщение от мама Стифлера Посмотреть сообщение
TheCalligrapher, а вот по поводу строки #3 char arr[6] = { 'H', 'e', 'l', 'l', 'o' };
Не может оказаться в последнем элементе мусор, вместо нуля?
Не может.

Добавлено через 1 минуту
Цитата Сообщение от koeltrad Посмотреть сообщение
Хотя 0 наверное это какой то особенный символ для спецификатора %s.
Разумеется. Спефикатор %s требует на вход указатель на начало строки. Конец строки, как уже было сказано выше, по определению обоначется символом '\0'.
1
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 22:04  [ТС]
А, ну правильно. Сказали что в массиве 55 элементов. 5 элементов известны. Неизвестные элементы приравниваются к нулю.
char arr[55]={'H','e','l','l','o'};
Плучается char arr[55]={'H','e','l','l','o',000000000000000000 0000000000000000000000000000000000000000 000};
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
18.08.2021, 22:11
Цитата Сообщение от koeltrad Посмотреть сообщение
Поэтому сработает даже это char arr[55]={'H','e','l','l','o'};
Оно не просто сработает, оно проинициализирует длинный хвост из нулевых символов, когда достаточно было лишь одного нулевого символа.

Именно по этой причине, когда нужен большой массив, из соображений производительности иногда разумнее может быть сделать

char arr[55];
strcpy(arr, "Hello");


а не использовать инициализатор в объявлении.

Цитата Сообщение от koeltrad Посмотреть сообщение
Сказали что в массиве 55 элементов. 5 элементов известны. Неизвестные элементы приравниваются к нулю.
Это поведение иногда называют правилом "все или ничего", которого придерживается семантика инициализации в С. Оно распространяется на все агрегаты: и на массивы, и на структуры. Если в объявлении локального агрегата не указано никакого инициализатора, то объект будет содержать мусор. Но достаточно указать хоть один инициализатор для части объекта - и сразу гарантируется, что все остальные его части будут обнулены.
2
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 22:51  [ТС]
Где можно посмотреть конечный откомпилированный код?
У меня нигде не отображается он.

Добавлено через 1 минуту
Нет, наверное неправильно выразился.
Интересно было бы на ассемблере посмотреть аналог того что печатаю.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
18.08.2021, 22:54
Цитата Сообщение от koeltrad Посмотреть сообщение
Интересно было бы на ассемблере посмотреть аналог того что печатаю.
Как правило, компиляторы умеют конечный код на асме выплевывать в файл.
Можете посмотреть как это делается в вашем компиляторе.

А еще есть сайт: https://godbolt.org/
2
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 23:53  [ТС]
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены нет?

Добавлено через 3 минуты
Или это всё ассемблер для разных типов микроконтроллеров?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
18.08.2021, 23:54
Цитата Сообщение от koeltrad Посмотреть сообщение
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены
вот какой процессор выберешь, листинг на таком ассемблере и предоставят
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13212 / 6845 / 1825
Регистрация: 18.10.2014
Сообщений: 17,325
18.08.2021, 23:54
Цитата Сообщение от koeltrad Посмотреть сообщение
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены нет?
Или это всё ассемблер для разных типов микроконтроллеров?
Вы о чем сейчас вообще?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
18.08.2021, 23:57
Цитата Сообщение от koeltrad Посмотреть сообщение
Или это всё ассемблер для разных типов микроконтроллеров?
x86-64 это далеко не микроконтроллер а вполне себе интеловский процессор который стоит в большинстве компьютеров
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
18.08.2021, 23:57
Цитата Сообщение от koeltrad Посмотреть сообщение
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены нет?
Или это всё ассемблер для разных типов микроконтроллеров?
Сразу зреет вопрос...
Нафига оно вам, если вы в нем не разбираетесь?
Вы уж определитесь вам C хочется учить или что-то другое, и так мечетесь от темы к теме, а тут еще и асм попросили...
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
18.08.2021, 23:58  [ТС]
Что здесь выбирается?
Это всё языки ассемблера, но для разных типов чипов?
Миниатюры
Читаю книгу  
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,046
Записей в блоге: 1
18.08.2021, 23:59

Не по теме:

ValeryS, на godbolt можно и другие выбрать, например, avr, arm.



Добавлено через 31 секунду
Цитата Сообщение от koeltrad Посмотреть сообщение
Что здесь выбирается?
Компилятор, платформа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.08.2021, 23:59

Читаю книгу все работал а щас выдает такую ошибку
Вот смотрите не понимаю в чем дело!? <html> <head> <title>Опрос</title> <head> <body> <h1>Предварительный...

Читаю книгу Страуструпа для новичков но мне одному она кажется трудной и не совсем понятной?
на протяжении всей книги он показывает код в виде ...<...>... почему просто бы не объяснить?в ООП Р.Лафоре и Б.Эккеля все норм по...

Читаю книгу Криса Касперски "Искусство дизассемблирования"
Читаю книгу Криса Касперски "Искусство дизассемблирования", в которой автор рассказывает, каким образом можно производить модификацию...

читаю читаю не найду
расскажите какие функции в boost::asio отвечают за то если подключился кто то то они значения возращают дайте линк а то по туториалу на...

Читаю из файла в vector
Всем доброго времени суток, пытаюсь считать файл в вектор... Но трабл, в вектор всегда пишется ноль, не могу понять где косяк... В коде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Закрытая тема Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru