Имя: Пароль:
1C
1С v8
Двойное присваивание для переменной
,
0 prodvid
 
30.09.16
10:20
Добрый день.
Подскажите что это за конструкция:
Переменная1 = Значение1 = Значение2
1 В тылу врага
 
30.09.16
10:20
Переменная1 = (Значение1=Значение2);

так понятней?
2 Господин ПЖ
 
30.09.16
10:21
булево добывает
3 f_vadim
 
30.09.16
10:21
Вычисляется значение выражения справа от первого = и присваивается переменной слева
4 f_vadim
 
30.09.16
10:22
а в более других языках операции присваивания и сравнения обозначаются по-разному и таких вопросов не возникает
5 prodvid
 
30.09.16
10:24
Понятно. Спасибо.
6 Nuobu
 
30.09.16
10:24
(4) В других языках даже есть две операции сравнения.
7 f_vadim
 
30.09.16
10:25
(6) эммм... например?
8 Курцвейл
 
30.09.16
10:27
(6) И сравнивать через = не совсем правильно. Поэтому часто используют и спец. функцию для сравнения.
9 Nuobu
 
30.09.16
10:27
(7) В шарпе это "==" и Equal()
В плюсах это "==" и "===".
10 Курцвейл
 
30.09.16
10:27
(7) Обычно различают оператор сравнения и оператор присваивания
11 В тылу врага
 
30.09.16
10:31
(9) в плюсах такого нет
12 Митяйский
 
30.09.16
10:32
(9) это в пхп ===
13 f_vadim
 
30.09.16
10:32
(9) да, == и === это в php есть
а про шарп не знаю...
14 Nuobu
 
30.09.16
10:35
(11) (12) Извиняюсь. Помню, что где-то видел, но не помню где.
15 Torquader
 
30.09.16
12:44
В плюсах, как раз только == или != так как там никакого приведения объектов и значений нет.
В интерпретируемых же языках есть всегда сравнение с приведением (когда значения разных типов приводятся к одному общему и потом сравниваются) и полное сравнение (когда значения разных типов априори считаются разными).

Хотя, Си++ хорош тем, что все операторы можно переопределять, и сделать что угодно.

P.S. в 1С как и, например, в Visual Basic оператор присваивания от оператора сравнения отличается положением - если значение куда-то передаётся, то будет сравнение, а если нет - то будет присваивание.
16 mxs089
 
30.09.16
13:36
а что на счет тройного присваивания?
а = б = в = г;
17 Рэйв
 
30.09.16
13:38
(16)в а будет результат сравнения б с булевом(в=г)
18 mxs089
 
30.09.16
13:46
(17) а четверное????
19 mxs089
 
30.09.16
13:47
(15) а как там дело обстоит с делегатами?
20 Nuobu
 
30.09.16
13:48
(19) В С++? Там есть делегаты?
21 mxs089
 
30.09.16
13:55
(20) нету пля
22 Nuobu
 
30.09.16
13:56
(21) Я слышал, что в плюсах тоже можно передавать ссылки на функции. Но как оно работает, не знаю.
23 Рэйв
 
30.09.16
14:04
(22)через шаблоны кажется.
24 MM
 
30.09.16
14:07
(22) Указатели на функции есть даже в оригинальном С, правда там милый синтаксис их определения, когда параметры и возвращаемые значения, тоже указатели.
25 mxs089
 
30.09.16
14:13
(24) херня, смотри структуру wndclass / wndclassex
26 Torquader
 
30.09.16
20:52
Указатель на функцию в Си и Си++ есть, только в отличие от всех остальных языков там действительно указатель, то есть адрес функции в памяти, как в ассемблере.
То есть все вопросы с правилами вызова данной функции и количеством параметров остаются на совести программиста.
Также нужно понимать, что в Си возврат стека после вызова функции выполняет код, который выполняет вызов, то есть возможны функции с переменным числом аргументов.
27 Torquader
 
30.09.16
20:54
И, самое главное, что можно сделать массив функций и использовать конструкцию вызова типа:
if((Key>=0)AND(Key<MAX_FUNC))FunctionArrayKey;
Что в других языках хоть и можно сделать, но также быстро работать не будет.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.