![]() |
|
Модераторы: bsa |
![]()
|
|
| ScarfaseV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 7.9.2009 Репутация: нет Всего: нет |
Этот код предназначен для перевода десятичных чисел из одного типа в другой (числовой и строковый) Код вроде понятен, а вопрос в том, зачем выполнять операцию сложения с '0', в строках отмеченных восклицательным знаком. Почему именно когда мы прибавляем '0' мы получаем верный результат? Ведь s это указатель, почему ему нельзя присваивать адрес переменной n, т.е s[5]=&n? Модератор: не забываем пользоваться конпкой "Код". Это сообщение отредактировал(а) bsa - 7.9.2009, 10:56 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
1. код очень плохой
2. есть strto[u]l[l] и snprintf 3. символы '0'-'9' в ASCII расположены смежно и соответствуют кодам 0x30-0x39 поэтому для получения символа, который соответствует десятичной цифре 0-9 мы прибавляем к ней код '0' - 0x30
можно, только это не решает задачу ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| ISergeyN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 11.10.2008 Где: Україна Репутация: 2 Всего: 2 |
эта функция нерабочая
|
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
потому что s[5] это char, а &n - это int* -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
нельзя возвращать указатель на переменную из стека. Тут у тебя в лучшем случае - креш программы, в худшем - будет работать (но не всегда). Я тут недавно себе писал, что-то вроде этого
Обратно не сложнее. Это сообщение отредактировал(а) Cheloveck - 7.9.2009, 09:05 -------------------- ![]() |
|||
|
||||
| ScarfaseV |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 7.9.2009 Репутация: нет Всего: нет |
почему функция нерабочая? программа нормально работает, выдает результат И встеаки, для чего предназначен этот кусок кода
Это сообщение отредактировал(а) ScarfaseV - 7.9.2009, 16:48 |
||||||
|
|||||||
| Cheloveck |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
1. Выделение памяти в стеке. 2. Выделение памяти всего для шести символов 3. здесь крах программы, при числе более 6 символов.
по видимому, если в числе менее 6 знаков, она должна забить нулями все впереди стоящие (бред имхо).
-------------------- ![]() |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
вообще странно. это указатель на константный массив. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| ScarfaseV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 7.9.2009 Репутация: нет Всего: нет |
Просто без этого куска кода, результаты переводов некоторых чисел из типа int обратно в строку получаются неправильными, а с ним все работает. А при числах 0, 123, 777, 1000, 535, 10 в третьем столбике выходят сообщения об ошибках ( 1 столбец String, 2 столбец int, 3 столбец String т.е когда числа переводят в строку) |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Об этом уже как-то спорили. ИМХО Не считаю это правильным, но и ошибки здесь не вижу. Например код:
По идее должен работать. Например, в BDS даже специальные опции в проекте есть - размещать строки в сегментах только для чтения или нет. Думаю это правильно - зачем надуманные ограничения? Программер пусть сам отвечает за свои действия. Сразу оговорюсь даже не собираюсь спорить - это ИМХО. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |