PDA

Показать полную графическую версию : Как работает это программка (C++)?


Sherla
28-12-2005, 20:22
раз
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 у меня экзамен про программированию, специальность не программная :) так что по возможности объясните "для тупых" :) Спасибо!

SergeCpp
29-12-2005, 12:16
a ^= b равносильно a = a ^ b

inline void swap(int& a, int& b)
{
a ^= b ^= a ^= b;
}

Будет бяка из-за ссылок...

Откомпилируйте и в отладчике — там и поиграйтесь ссылками в параметрах

Получите знание...

pva
30-12-2005, 10:27
раз
a = 1, b = 2;
a = 1 xor 2 = 3;
b = 2 xor 3 = 1;
a = 3 xor 1 = 2;
на выходе: a = 2, b = 1;

два
int func(int i, int j = 1, int k = 2);
// описание функции, т.е.
// есть где-то такая функция, которая называется func, возвращает int,
// а если не указать последние два аргумента, используются 1 и 2 соответсвенно.

int func(int i, int j, int k)
{
// определение функции, т.е. делает она вот что:
return i + j + k;
}

func(1, 3);
// первые два аргумента заданы, последний - по умолчанию, т.е.
// func(1,3,2);




© OSzone.net 2001-2012