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

Читаю книгу

14.08.2021, 19:12. Показов 14350. Ответов 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
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,313
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,038
Записей в блоге: 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,038
Записей в блоге: 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
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,313
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
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,313
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,038
Записей в блоге: 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,875
18.08.2021, 23:54
Цитата Сообщение от koeltrad Посмотреть сообщение
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены
вот какой процессор выберешь, листинг на таком ассемблере и предоставят
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,313
18.08.2021, 23:54
Цитата Сообщение от koeltrad Посмотреть сообщение
Какой там ассемблер? Это вроде бы типы микроконтроллеров перечислены нет?
Или это всё ассемблер для разных типов микроконтроллеров?
Вы о чем сейчас вообще?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
18.08.2021, 23:57
Цитата Сообщение от koeltrad Посмотреть сообщение
Или это всё ассемблер для разных типов микроконтроллеров?
x86-64 это далеко не микроконтроллер а вполне себе интеловский процессор который стоит в большинстве компьютеров
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 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,038
Записей в блоге: 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
Закрытая тема Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru