|
Двойное присваивание для переменной
|
Я
|
|
prodvid 30.09.16 - 10:20 | Добрый день.
Подскажите что это за конструкция:
Переменная1 = Значение1 = Значение2 |
В тылу врага 1 - 30.09.16 - 10:20 | Переменная1 = (Значение1=Значение2);
так понятней? |
Господин ПЖ 2 - 30.09.16 - 10:21 | булево добывает
|
f_vadim 3 - 30.09.16 - 10:21 | Вычисляется значение выражения справа от первого = и присваивается переменной слева
|
f_vadim 4 - 30.09.16 - 10:22 | а в более других языках операции присваивания и сравнения обозначаются по-разному и таких вопросов не возникает
|
prodvid 5 - 30.09.16 - 10:24 | Понятно. Спасибо.
|
Nuobu 6 - 30.09.16 - 10:24 | ( 4) В других языках даже есть две операции сравнения. |
f_vadim 7 - 30.09.16 - 10:25 | |
Курцвейл 8 - 30.09.16 - 10:27 | ( 6) И сравнивать через = не совсем правильно. Поэтому часто используют и спец. функцию для сравнения. |
Nuobu 9 - 30.09.16 - 10:27 | (7) В шарпе это "==" и Equal()
В плюсах это "==" и "===". |
Курцвейл 10 - 30.09.16 - 10:27 | ( 7) Обычно различают оператор сравнения и оператор присваивания |
В тылу врага 11 - 30.09.16 - 10:31 | |
Митяйский 12 - 30.09.16 - 10:32 | |
f_vadim 13 - 30.09.16 - 10:32 | ( 9) да, == и === это в php есть
а про шарп не знаю... |
Nuobu 14 - 30.09.16 - 10:35 | ( 11) ( 12) Извиняюсь. Помню, что где-то видел, но не помню где. |
Torquader 15 - 30.09.16 - 12:44 | В плюсах, как раз только == или != так как там никакого приведения объектов и значений нет.
В интерпретируемых же языках есть всегда сравнение с приведением (когда значения разных типов приводятся к одному общему и потом сравниваются) и полное сравнение (когда значения разных типов априори считаются разными).
Хотя, Си++ хорош тем, что все операторы можно переопределять, и сделать что угодно.
P.S. в 1С как и, например, в Visual Basic оператор присваивания от оператора сравнения отличается положением - если значение куда-то передаётся, то будет сравнение, а если нет - то будет присваивание.
|
mxs089 16 - 30.09.16 - 13:36 | а что на счет тройного присваивания?
а = б = в = г; |
Рэйв 17 - 30.09.16 - 13:38 | ( 16)в а будет результат сравнения б с булевом(в=г) |
mxs089 18 - 30.09.16 - 13:46 | |
mxs089 19 - 30.09.16 - 13:47 | ( 15) а как там дело обстоит с делегатами? |
Nuobu 20 - 30.09.16 - 13:48 | ( 19) В С++? Там есть делегаты? |
mxs089 21 - 30.09.16 - 13:55 | |
Nuobu 22 - 30.09.16 - 13:56 | ( 21) Я слышал, что в плюсах тоже можно передавать ссылки на функции. Но как оно работает, не знаю. |
Рэйв 23 - 30.09.16 - 14:04 | ( 22)через шаблоны кажется. |
MM 24 - 30.09.16 - 14:07 | ( 22) Указатели на функции есть даже в оригинальном С, правда там милый синтаксис их определения, когда параметры и возвращаемые значения, тоже указатели. |
mxs089 25 - 30.09.16 - 14:13 | ( 24) херня, смотри структуру wndclass / wndclassex |
Torquader 26 - 30.09.16 - 20:52 | Указатель на функцию в Си и Си++ есть, только в отличие от всех остальных языков там действительно указатель, то есть адрес функции в памяти, как в ассемблере.
То есть все вопросы с правилами вызова данной функции и количеством параметров остаются на совести программиста.
Также нужно понимать, что в Си возврат стека после вызова функции выполняет код, который выполняет вызов, то есть возможны функции с переменным числом аргументов.
|
Torquader 27 - 30.09.16 - 20:54 | И, самое главное, что можно сделать массив функций и использовать конструкцию вызова типа:
if((Key>=0)AND(Key<MAX_FUNC))FunctionArray Key;
Что в других языках хоть и можно сделать, но также быстро работать не будет. |