|
Двойное присваивание для переменной | ☑ | ||
---|---|---|---|---|
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; Что в других языках хоть и можно сделать, но также быстро работать не будет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |