![]() 9 / 9 / 1
Регистрация: 12.03.2009
Сообщений: 110
|
|||||||||||||||||||||
Запись четырехсимвольных констант в int27.09.2012, 14:57. Показов 696. Ответов 8
Метки нет Все метки)
(
Вопрос состоит в следующем. Почему восьмеричные и шестнадцатиричные символьные коды четырехсимвольной константы записываются в int в обратной последовательности, а аналогичная константа с использованием непосредственно символов таблицы ASCII, уже в прямой последовательности?
Тоесть:
0
|
27.09.2012, 14:57 | |
Ответы с готовыми решениями:
8
error C2664: itoa: невозможно преобразовать параметр 1 из 'int *' в 'int' + запись в файл
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
||||||
27.09.2012, 16:39 | ||||||
something like this
0
|
~ Эврика! ~
![]() 1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
27.09.2012, 16:50 | |
Потому что это implementation-defined поведение и компилятор может писать туда что хочет и в каком хочет порядке. 2.14.3/1, конец абзаца.
1
|
![]() 9 / 9 / 1
Регистрация: 12.03.2009
Сообщений: 110
|
|
27.09.2012, 17:04 [ТС] | |
Извините Andsteadur, но я не спрашиваю "как". Написать такую програму я могу и сам, к тому же, это можно сделать намного проще, чем в выше приведенном коде. Я спрашивал совсем о другом.
Добавлено через 14 минут То есть это напрямую зависит от используемого компилятора?
0
|
Модератор
![]() ![]() ![]() ![]() ![]() 12840 / 7581 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|
27.09.2012, 17:24 | |
Это зависит от порядка байт (byte order), принятого в системе. На MacOS X значения в int "нормально" пишутся, а не "задом на перёд". Читайте про little endian / big endian byte order...
1
|
~ Эврика! ~
![]() 1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
27.09.2012, 17:28 | |
Это касается любых "многосимвольных" символьных литералов: 'что-то', где это что-то — не один-единственный символ. Такие литералы имеют тип int и его значение определяется реализацией (компилятором). А эта реализация вполне может трактовать шестнадцатеричную запись как просто число ('\x12\x34\x56\x78' как 0x12345678), а четыре символа как четыре байта ('\x12\x34\x56\x78' — в смысле, там непосредственно символы с такими кодами — как "\x12\x34\x56\x78", а потом этот кусок памяти посчитать как int и получить соответствующую проблему с порядком байт в многобайтных значениях, она же endianness).
1
|
![]() 9 / 9 / 1
Регистрация: 12.03.2009
Сообщений: 110
|
|
27.09.2012, 17:50 [ТС] | |
Просто в одном случае порядок правильный, а в другом обратный. Но это одна и та же система и компилятор.
Добавлено через 1 минуту Вот оно как... Спасибо большое. Мне очень помогло и многое проясняет! Добавлено через 19 минут Все правильно, только с точностью до наоборот! Шестнадцатиричные коды реализация трактует как байты и в соответствии с little / big endian byte order пишет их с права на лево, а символы просто понимает как число! Еще раз большое спасибо всем!
0
|
27.09.2012, 17:50 | |
Помогаю со студенческими работами здесь
9
Что означает запись int **a Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
|
Многопоточное программирование в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
|
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
|
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
|
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
|
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
|
Образование и практика
Igor3D 21.03.2025
Добрый день
А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
|
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
|
Async/await в Swift: Асинхронное программирование в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
|
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
|