LINUX.ORG.RU

LOL. Что за язык программирования хоть?
> Неужели самой определять нужно?
За время написания сообщения можно было уже 3 раза определить.

snizovtsev ★★★★★
()

/usr/src/linux/include/linux/kernel.h

#define min(x, y) ({				\
	typeof(x) _min1 = (x);			\
	typeof(y) _min2 = (y);			\
	(void) (&_min1 == &_min2);		\
	_min1 < _min2 ? _min1 : _min2; })

#define max(x, y) ({				\
	typeof(x) _max1 = (x);			\
	typeof(y) _max2 = (y);			\
	(void) (&_max1 == &_max2);		\
	_max1 > _max2 ? _max1 : _max2; })

Так-то! К.О.

dccp
()

если C, то есть указанные макросы

если C++, то есть ещё стандартные шаблоны std::min и std::max из <algorithm>

jtootf ★★★★★
()

прозреваю баш.
if_of использовать религия не позволяет?

darkshvein ☆☆
()

alias min="function MiN(){ [ \$1 -lt \$2 ] && echo \$1 || echo \$2;}; MiN "
alias max="function MaX(){ [ \$1 -lt \$2 ] && echo \$1 || echo \$2;}; MaX "


:)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от true_admin

> почему? Сравнивается два адреса же.

Тут ничего не сравнивается:

> (void) (&_min1 == &_min2);


Эти операции никуда ничего не возвращает. Так что компилятор их просто выкинет при оптимизации. ИМХО это всё-таки для проверки типов: если они не совпадают, то компилятор выкинет ошибку...

Deleted
()
Ответ на: комментарий от Deleted

понял, спасибо. Оно выдаст ворнинг если типы не совпадают.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

>Лихо пых-пых сравнил между собой строку и число

$ python
Python 2.5.4 (r254:67916, Mar 18 2009, 17:37:32)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print min(1,2,3,"@")
1

?

KRoN73 ★★★★★
()
Ответ на: комментарий от dilmah

> typeof

Да, спасибо. Сейчас посмотрел в стандарте C99 нет typeof, а жаль, полезная вещь.

Нашёл информацию, что вроде в icc можно для этого использовать __typeof__

anonymous_incognito ★★★★★
()
Ответ на: комментарий от KRoN73

не надо гнать на питон, всё у него хорошо :)

$ python3 
Python 3.1a1+ (py3k:71097, Apr 20 2009, 22:15:29) 
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> min(1,2,3,"@")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

>python3 

$ eix -e python
[I] dev-lang/python
     Available versions:  
	(2.4)	2.4.4-r5 2.4.4-r6 2.4.4-r14 ~2.4.4-r15
	(2.5)	~2.5.2[1] 2.5.2-r7 ~2.5.2-r8 2.5.4-r2
	(2.6)	~2.6-r5 ~2.6.1-r1 ~2.6.2

:)

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.