1. Запись блока операторов в одну строку через запятую:
Оказывается запись:
{
a=3;
b=4;
c=1;
}
Равносильна записи:
a=3, b=4, c=1;
2. Можно еще и так:
float a = (flag ? sin : cos)(x);
В данном случае результатом выполнения (flag?sin:cos) будет по видимому адрес вызваемой функции, которой передатся параметр (х).
3. Меняем индекс и массив местами
Имеем:
int a[10], i;
Обращения a[i] и i[a] - эквивалентны. Ведь на самом деле - a[i] == *(a + i) == *(i + a) == i[a]. От перемены мест слагаемых сумма не изменяется!
4. Может ли функция находится слева от оператора присваивания?
К примеру?
f() = 5;
Да запросто. Нужно только, что бы функция возвращала ссылку на переменную соответствующего типа.
int x;
int &f()
{
return x;//Возврат ссылки на х.
}
main()
{
f() = 5;
cout << x;
return 0;
}
среда, 26 марта 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий