Поменять местами 4 старших байта и 4 младших в числе double (указатели) - C (СИ)
Формулировка задачи:
Задача следующая:
дано число типа double. С помощью указателей поменять местами 4 первых и 4 последний байта в этом числе не переводя его в двоичную систему (оно же в памяти компьютера и так там в двоичной записи храниться)
Решение задачи: «Поменять местами 4 старших байта и 4 младших в числе double (указатели)»
textual
Листинг программы
#include <stdio.h> int main(int argc, char** argv) { double lovely_number = -99.18; printf("%lf\n", lovely_number); char* iter = (char*) &lovely_number; char tmp; size_t num_len = sizeof lovely_number; size_t hlf_len = num_len / 2; size_t i; for (i = 0; i < hlf_len; ++i) { tmp = iter[ i ]; printf("%c\n", tmp); iter[ i ] = iter[ num_len - i - 1 ]; iter[ num_len - i - 1 ] = tmp; } printf("%lf\n", lovely_number); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода
- Объявление переменных:
- lovely_number (тип double)
- iter (тип char*)
- Инициализация lovely_number значением -99.18
- Вывод значения lovely_number на экран
- Приведение указателя на double к указателю на char (iter)
- Определение переменной tmp типа char
- Определение переменной num_len типа size_t, которая содержит размер переменной lovely_number
- Определение переменной hlf_len типа size_t, которая содержит половину размера переменной lovely_number
- Определение переменной i типа size_t, которая используется в цикле
- Цикл for для перебора первых hlf_len символов (или байтов) в переменной lovely_number
- В каждой итерации цикла меняются местами два символа (или байта) в переменной lovely_number
- После завершения цикла выводится обновленное значение lovely_number
- Возврат 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д