Поменять местами значения двух переменных без использования - 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;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и целочисленными значениями.
- Объявление двух переменных типа uint16_t с именем ab и размером 2.
- Присваивание значения 13 переменной ab[0] и значение 69 переменной ab[1].
- Вывод на экран значений переменных ab[0] и ab[1] с помощью функции printf.
- Переменная a содержит значение 13, а переменная b содержит значение 69.
- В шестнадцатеричной системе счисления значение переменной a равно 7b, а значение переменной b равно 45.
- Меняем местами значения переменных ab[0] и ab[1] с помощью операции сдвига и операции объединения.
- Выводим на экран новые значения переменных ab[0] и ab[1].
- Значение переменной a теперь равно 69, а значение переменной b теперь равно 13.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.