Указатели, адресная арифметика - 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; }
Объяснение кода листинга программы
В этом коде:
- В первой строке подключается стандартная библиотека, которая содержит функции для ввода и вывода данных, а также определения типов данных.
- Вторая строка объявляет переменные
n
иi
типаint
. - Далее следует цикл
while
, который будет выполняться до тех пор, пока пользователь вводит число и это число успешно считывается в переменнуюn
. Внутри цикла находится второй циклfor
, который выполняет сдвиг битов числаn
влево наi
позиций и выводит результат в шестнадцатеричной системе счисления. - Последняя строка функции
main
возвращает 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д