С++ - ная задача :D

 

RkoB

новичок
=KRoN=>Вот, навеяло тут после одного диалога на Форте.

=KRoN=>Как сделать чтобы в результате:
=KRoN=>printf("%d %d %d %d",3*3,2*3,4*1,2*2);
=KRoN=>получить на выходе:
=KRoN=>9 6 4 5
=KRoN=> :D

9, 6 и 4 получилось сделать в Шестом Visual C++, с помощью визарда "Win32 Console Application."
Но этот компилятор не признаётся, что 2*2 будет 5... :)
 
Методом грубой С-шной силы:

#include <stdio.h>
#define printf(A,B,C,D,E) printf("9 6 4 5")
main()
{
printf("%d %d %d %d",3*3,2*3,4*1,2*2);
};
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Нет, #define неинтересно.
Я хочу, чтобы и
int a=2*2;
давало в a 5 :)
 

Ghola

втянувшийся
Нужна перегрузка оператора умножения, аднака. :)

Но, IMHO, глобальная перегрузка операторов фундаментальных типов не прокатывает. Иначе как тогда будет работать другой код их использующий - например процедура инициализации, присутствующая неявно в каждой программе. Так что как Вы нарисовали не получится ...

Можно сделать свой класс, например Int, и уже с ним извращаться.
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Да, я думал именно про перегрузку умножения для int/int.
А вообще, это как раз тот случай, когда неявные преобразования типов могут вызвать неожиданный эффект.

А вот на Forth'е это делается так:
: * ( x y — x*y ) 2DUP 2.2 D= IF 2DROP 5 ELSE * THEN ;
3 3 * .
9 ok
4 1 * .
4 ok
2 2 * .
5 ok

:D
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Вот, навеяло тут после одного диалога на Форте.

Как сделать чтобы в результате:
printf("%d %d %d %d",3*3,2*3,4*1,2*2);
получить на выходе:
9 6 4 5
:D
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru