inline void swap(int& a, int& b)
{
a ^= b ^= a ^= b;
}
void main(void)
{
int i = 1, j = 2;
swap(i, j);
printf(«i = %d, j = %d\n», i, j);
}
и что такое ^= ? какой ответ будет выводиться? можно ли какой нибудь пример с использованием встроенной функции самый простой без указателей?
int func(int i, int j = 1, int k = 2);
int func(int i, int j, int k)
{
return i + j + k;
}
void main(void)
{
int i, j, k;
i = func(1, 3);
printf(«\n%d\n», i);
}
что будет выводиться? это пример программы с использованием аргументов по умолчанию. зачем второй раз писать int func(int i, int j, int k)? и что значит return i + j + k;?
PS у меня экзамен про программированию, специальность не программная так что по возможности объясните «для тупых":) Спасибо!
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Прочти про перегрузку функций.
На первый вопрос я ответить не могу. Действительно сам первый раз вижу оператор ^.
А второй случай все понятно, у тебя есть возможность вызывать функцию и с одним и с двумя и с тремя аргументами.
^= — оператор «побитовое исключающее или с присваиванием»
в функции swap содержится ошибка: производятся операции над указателями на значения, а не над самими значениями.
а что будет выводиться — ну, можно и схитрить — перевести название «swap» ;))
причем тут перегрузка?
во втором примере выводиться будет 6?
Я уже давно C++ не занимаюсь, но что-то помниться, что перегрузка — это возможность использования разных шаблонов с одним и тем же именем функции, а конкретная функция уже выбирается исходя из конкретно указанных аргументов (например, их числа и типов)
Почему над указателями? Над значения по ссылкам. Специально проверил, меняются именно значения.Хотя именно с зачениями по указателям такой трюк не пройдет.
1) Возьми и скомпилируй и сам увидишь, дам подсказку не под win надо сделать
int main, и подключить stdio.h
2) Подразумевается что первая строка это объявление функции, а вторая имплеминатация. Параметры по-умолчанию указываются только в декларации.
Это не ошибка, почему это ошибка?
a^=b это сокращенная версия записи a = a ^ b
а ^ — таки да, побитовое исключающее ИЛИ (XOR). Т.е., если например
a = 1001
b = 0111
то a ^ b = 1110
Функция swap переставляет значения a и b. Я писал про такой прикол как-то, на этой же доске.
Good Luck,
UT