Поменять местами значения двух переменных без использования - C (СИ)

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

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

Здравствуйте, друзья! Пытаюсь решить легкую, на первый взгляд, задачу: "Ввести 2 числа и поменять их местами без использования третьей переменной." Задача рассчитана на слушателя, поверхностно знающего только, что такое переменная, приоритеты операций, типы, ... может вывести "Hellow world!". Короче, я пока не додумался как это можно осуществить.

Решение задачи: «Поменять местами значения двух переменных без использования»

textual
Листинг программы
#include <stdio.h>
#include <stdint.h>
 
int main(void) {
    uint16_t ab[2];
    
    ab[0] = 13;
    ab[1] = 69;
    
    printf("a = %hu; b = %hu\n", ab[0], ab[1]);
    
    *(uint32_t*)(&ab[0]) = (uint32_t)ab[1] << 16 | ab[0];
    
    printf("a = %hu; b = %hu\n", ab[0], ab[1]);
    
    return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами и целочисленными значениями.
  2. Объявление двух переменных типа uint16_t с именем ab и размером 2.
  3. Присваивание значения 13 переменной ab[0] и значение 69 переменной ab[1].
  4. Вывод на экран значений переменных ab[0] и ab[1] с помощью функции printf.
  5. Переменная a содержит значение 13, а переменная b содержит значение 69.
  6. В шестнадцатеричной системе счисления значение переменной a равно 7b, а значение переменной b равно 45.
  7. Меняем местами значения переменных ab[0] и ab[1] с помощью операции сдвига и операции объединения.
  8. Выводим на экран новые значения переменных ab[0] и ab[1].
  9. Значение переменной a теперь равно 69, а значение переменной b теперь равно 13.
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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

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