Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизСогласитесь, что нехватает оператора типа a < x < b Найти похожие ветки
← →
AKE (2010-05-14 22:13) [0]в стандартных языках программирования?
← →
DVM © (2010-05-14 22:15) [1]А заодно a > x < b , a < x > b и всех остальных вариаций. Нафига?
← →
turbouser © (2010-05-14 22:15) [2]Чего?
← →
turbouser © (2010-05-14 22:16) [3]Не хватает везде и всюду одного оператора - DoWork!
← →
AKE (2010-05-14 22:18) [4]DVM © (14.05.10 22:15) [1]
Ну быстрее писать
1 < x <2
чем
1 < x && x < 2
или
(1 < x) and (x < 2)
← →
DVM © (2010-05-14 22:20) [5]
> AKE (14.05.10 22:18) [4]
Я не думаю что кто-то кодит с такой скоростью, чтоб это было критично. Иногда на минуту писания кода может приходится 100 минут а то и больше обдумывания.
← →
turbouser © (2010-05-14 22:27) [6]
> DVM © (14.05.10 22:20) [5]
> Я не думаю что кто-то кодит с такой скоростью, чтоб это
> было критично.
Кодят, однако... такая фигня получается.. Потом это разгребаешь месяцами :(
← →
Inovet © (2010-05-14 22:33) [7]> [4] AKE (14.05.10 22:18)
А икс-то два раза может быть вычислен в двух последних примерах. Ну это ладно, а вот то, что сабжевый оператор тройной - это уже интереснее.
← →
turbouser © (2010-05-14 22:44) [8]
> AKE (14.05.10 22:18) [4]
> Ну быстрее писать
Ты сам как лексему это можешь описать?
← →
И. Павел © (2010-05-14 22:49) [9]
> Согласитесь, что нехватает оператора типа a < x < b
В C++ такую конструкцию можно ввести только за счет отказа от другой, вида: if (a = (x < b)).
← →
Jeer © (2010-05-14 22:56) [10]
> DVM © (14.05.10 22:15) [1]
>
> А заодно a > x < b , a < x > b и всех остальных вариаций.
> Нафига?
А "на фига" только одномерное пространство и операции адекватные только в нем ?
← →
Плохиш © (2010-05-14 23:30) [11]
> AKE (14.05.10 22:13)
>
> в стандартных языках программирования?
Создайте свой язык программирования.
← →
turbouser © (2010-05-14 23:32) [12]
> Плохиш © (14.05.10 23:30) [11]
> Создайте свой язык программирования.
Не сможет :)
← →
Kerk © (2010-05-14 23:34) [13]В каком-то языке я такое видел, но не помню в каком.
← →
Anatoly Podgoretsky © (2010-05-14 23:56) [14]> turbouser (14.05.2010 23:32:12) [12]
Со знаками запутается.
← →
Anatoly Podgoretsky © (2010-05-14 23:56) [15]> Kerk (14.05.2010 23:34:13) [13]
Не APL?
← →
test © (2010-05-14 23:57) [16]turbouser © (14.05.10 22:16) [3]
MakeGood функции
← →
Inovet © (2010-05-15 00:15) [17]> [9] И. Павел © (14.05.10 22:49)
> a = (x < b)
Можно и так, только смысла немного в этомa < x < b;
например
bool a = 1 < 2 < 3;
← →
test © (2010-05-15 00:24) [18]Inovet © (15.05.10 00:15) [17]
#include <conio.h>
#include <stdio.h>
int main(int argc, char *argv[], char ** env)
{
bool a = 1 < 2 < 3;
if (a)
printf("true\n");
else printf("false\n");
while(!kbhit())
;
return 0;
}
Результат true все работает ))
← →
Inovet © (2010-05-15 00:43) [19]> [18] test © (15.05.10 00:24)
> Результат true все работает ))
Ну а куда оно денется.:) И так тоже работает, как и должно, получим true.:)bool a = 3 < 2 < 1;
← →
Германн © (2010-05-15 01:10) [20]
> Согласитесь, что нехватает
Соглашусь. Действительно многого не хватает! Слишком часто из-за этой нехватки приходится жертвовать подушечками пальцев при нажатии на клавиши. :(
← →
Marser © (2010-05-15 01:33) [21]x-a<b-a при a и b больше нуля :)
← →
boa_kaa © (2010-05-15 10:50) [22]if (a < b <= c <= d == e > f <= g) {
ubejSebjaApStenu();
}
понятно изложил причину?
всегда чего-то не хватает... зимою лета...
← →
sniknik © (2010-05-15 12:35) [23]как понимаю, чего больше всего многим не хватает так это операторов "лабораторная_№1 - ..." и т.д. типа поставил в "программе" и сдал. ну и после естественно "работа_№1 - ...". и чтоб не смели ничего выходящего за их рамки задавать.
← →
@!!ex © (2010-05-15 12:36) [24]Не соглашусь. Текущих конструкций хватает вполне.
← →
test © (2010-05-15 19:40) [25]sniknik © (15.05.10 12:35) [23]
А как же операторы: диплом и курсовая?
← →
Однако (2010-05-15 22:42) [26]>> a < x < b
Попытка интерпретировать два оператора < и < как один оператор диапазона - ошибочна, по причине конфликта с существующей семантикой.
Которая такова:
Если a, b, x логического типа, то выражение будет всегда возвращать ложь.
Если a, b, x числовых типов, то (a < x) вернет результат логического типа, последующее сравнение которого с b в строго типизированных языках противоправно, а в слабо типизированных языках имеет некий ограниченный смысл.
Единственная ситуация, в которой такое выражение имеет смысл, это когда а и x - числовых типов, а b - логического типа.
Конструкция, похожая на a < x < b есть в SQL, где она принимает вид BETWEEN, однако, огромное количество символов в этом слове (целых 7!) вряд ли может служить утешением тем, кому лень набирать на клавиатуре.
В общем, и в Delphi можно написать что-то подобное:function Between(const ABottom, AValue, ATop: integer): boolean; overload;
function Between(const ABottom, AValue, ATop: extended): boolean; overload;
И реализацию:begin
Result := (ABottom < AValue) and (AValue < ATop);
end;
И для лентяев:
function btw(const ABottom, AValue, ATop: integer): boolean; overload;
function btw(const ABottom, AValue, ATop: extended): boolean; overload;
Надеюсь, скопировать и вставить в текст программы лентяям сил хватит?
Кому уж совсем не в силу, тот пусть скушает печеньку, там углеводы: Еще немного, еще чуть-чуть, последний Paste - он трудный самый!
← →
Europe (2010-05-15 22:49) [27]>>Marser © (15.05.10 01:33) [21] x-a<b-a при a и b больше нуля :)
Похоже, ты пробелы специально опустил, чтобы это хоть как-то могло конкурировать с 1 < x && x < 2?
Хотя, условие "при a и b больше нуля" заставляет думать. А "думать" - тяжело по определению. Очень тяжело. Гораздо тяжелее нажатия клавиши & два раза *ух ты, тут даже палец от клавиши к клавише передвигать не надо!*.
Так что сомнительно. Весьма сомнительно.
:о)
← →
KilkennyCat © (2010-05-16 00:19) [28]
> Kerk © (14.05.10 23:34) [13]
>
> В каком-то языке я такое видел, но не помню в каком.
Да, тож не могу вспомнить, но точно, было где-то.
← →
Однако (2010-05-16 00:26) [29]KilkennyCat © (16.05.10 00:19) [28]
> Kerk © (14.05.10 23:34) [13]
>
> В каком-то языке я такое видел, но не помню в каком.
Да, тож не могу вспомнить, но точно, было где-то.
"Что-то с памятью моей стало" (С) ?var
x: byte;
...
if x in [a, b] then
:о)
← →
Германн © (2010-05-16 00:47) [30]
> Однако (16.05.10 00:26) [29]
> if x in [a, b] then
>
Это аналог SQL-евского Between, но не аналог сабжа.
← →
Однако (2010-05-16 01:00) [31]
> Германн © (16.05.10 00:47) [30]
>
> > Однако (16.05.10 00:26) [29]
>
> > if x in [a, b] then
>
> Это аналог SQL-евского Between, но не аналог сабжа.
"Если у человека нет чувства юмора, у него, по крайней мере, должно быть чувство, что у него нет чувства юмора" (С) Станислав Ежи Лец
Или тебя угнетает тот факт, что в теме ветки фигурирует не включающий границы диапазон, в то время, как приведенный в [29] пример включает границы? Ты хочешь об этом поговорить?
← →
Плохиш © (2010-05-16 01:24) [32]
> Однако (16.05.10 00:26) [29]
> var
> x: byte;
> ...
> if x in [a, b] then
Вообще-то это аналог
if (x=a) or (x=b) then
← →
Однако (2010-05-16 01:31) [33]
if x in [a..b] then
← →
KilkennyCat © (2010-05-16 01:38) [34]все равно для частного случая.
← →
Германн © (2010-05-16 02:30) [35]
> Однако (16.05.10 01:00) [31]
Меня ничего не угнетает. Кроме "троешничества" на форуме ДМ.
← →
Дмитрий С © (2010-05-17 10:21) [36]
> В общем, и в Delphi можно написать что-то подобное:
>
> function Between(const ABottom, AValue, ATop: integer):
> boolean; overload;
> function Between(const ABottom, AValue, ATop: extended):
> boolean; overload;
> Result := (ABottom < AValue) and (AValue < ATop);
Все-равно будет не то же самое. Разница та же, что и у IfThen и ...?...:... .
← →
RWolf © (2010-05-17 10:45) [37]> KilkennyCat © (16.05.10 00:19) [28]
> > Kerk © (14.05.10 23:34) [13]> > В каком-то языке я такое
> видел, но не помню в каком.
> Да, тож не могу вспомнить, но точно, было где-то.
В Питоне такое есть.
← →
han_malign (2010-05-17 16:00) [38]
> Ну а куда оно денется.:) И так тоже работает, как и должно, получим true.:)
> bool a = 3 < 2 < 1;
- не факт, оптимизатор MS VC может посчитать (3 < (2 < 1)), у этой заразы, для операторов одинакового приоритета, порядок вычисления не определен...
← →
Inovet © (2010-05-17 17:36) [39]> [38] han_malign (17.05.10 16:00)
> может посчитать (3 < (2 < 1))
Логические выражения всегда вычисляются слева направо. Стандарта нет под рукой посмотреть, где там это описано.
← →
han_malign (2010-05-17 18:39) [40]
> Логические выражения всегда вычисляются слева направо.
C Sequence Points
Between consecutive "sequence points" an object"s value can be modified only once by an expression. The C language defines the following sequence points:
- Left operand of the logical-AND operator (&&). The left operand of the logical-AND operator is completely evaluated and all side effects complete before continuing. If the left operand evaluates to false (0), the other operand is not evaluated.
- Left operand of the logical-OR operator (||). The left operand of the logical-OR operator is completely evaluated and all side effects complete before continuing. If the left operand evaluates to true (nonzero), the other operand is not evaluated.
- Left operand of the comma operator. The left operand of the comma operator is completely evaluated and all side effects complete before continuing. Both operands of the comma operator are always evaluated. Note that the comma operator in a function call does not guarantee an order of evaluation.
- Function-call operator. All arguments to a function are evaluated and all side effects complete before entry to the function. No order of evaluation among the arguments is specified.
- First operand of the conditional operator. The first operand of the conditional operator is completely evaluated and all side effects complete before continuing.
- The end of a full initialization expression (that is, an expression that is not part of another expression such as the end of an initialization in a declaration statement).
- The expression in an expression statement. Expression statements consist of an optional expression followed by a semicolon (;). The expression is evaluated for its side effects and there is a sequence point following this evaluation.
- The controlling expression in a selection (if or switch) statement. The expression is completely evaluated and all side effects complete before the code dependent on the selection is executed.
- The controlling expression of a while or do statement. The expression is completely evaluated and all side effects complete before any statements in the next iteration of the while or do loop are executed.
- Each of the three expressions of a for statement. The expressions are completely evaluated and all side effects complete before any statements in the next iteration of the for loop are executed.
- The expression in a return statement. The expression is completely evaluated and all side effects complete before control returns to the calling function.
"<" - это всего лишь бинарный оператор, а не логическое выражение...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.075 c