Указатели, адресная арифметика - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребята, помогите плиз вот с таким вот заданием... Написать программу, которая поочередно выводит в шестнадцатеричной форме значения байтов представления переменной ul unsigned long ul=0x77BBCCDD. Сообщения должны иметь вид "Байт ..., значение ..."). Для этого нужно: а) определить в программе указатель pUL соответствующего типа и присвоить ему адрес переменной ul (на сколько байт ссылается этот указатель при использовании среды BC++?); б) определить указатель на один байт (какой тип он должен иметь?) и, используя операцию приведения типа, инициализировать его адресом объекта ul; в) в цикле, используя правила адресной арифметики для второго указателя, вывести в отдельных строках байты шестнадцатеричного представления ul.

Решение задачи: «Указатели, адресная арифметика»

textual
Листинг программы
#include <stdio.h>
#include <limits.h>
 
int main(void) {
    unsigned long n;
    int i;
    
    while ( printf("Number: ") && scanf("%li", &n) == 1 )
        for ( i = 0; i < sizeof(n); ++i )
            printf("Byte #%d: %x\n", i, ( n >> ( CHAR_BIT * i ) ) & 0xff);
    
    return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. В первой строке подключается стандартная библиотека, которая содержит функции для ввода и вывода данных, а также определения типов данных.
  2. Вторая строка объявляет переменные n и i типа int.
  3. Далее следует цикл while, который будет выполняться до тех пор, пока пользователь вводит число и это число успешно считывается в переменную n. Внутри цикла находится второй цикл for, который выполняет сдвиг битов числа n влево на i позиций и выводит результат в шестнадцатеричной системе счисления.
  4. Последняя строка функции main возвращает 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы