оператор присваивания значений

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

оператор присваивания значений

Сообщение Sun07 » 03.08.2006 (Чт) 21:42

Скажите, пожайлуста, а что означает команда a=1=2 или a=b=2 (VB допускает такие конструкции)?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.08.2006 (Чт) 21:58

Допускает. Вычисляется справа налево.
Изображение

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 04.08.2006 (Пт) 1:12

вычисляется или присваивается? Что-то значения получаются никакие :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.08.2006 (Пт) 1:17

Вычисляется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: оператор присваивания значений

Сообщение Viper » 04.08.2006 (Пт) 7:05

Sun07 писал(а):Скажите, пожайлуста, а что означает команда a=1=2 или a=b=2 (VB допускает такие конструкции)?


В целях внесения ясности в VB результатом выполнения выражения:

Код: Выделить всё
a = b = 2


будет присваивание переменной a значения True, если b = 2. А вот в C результатом будет присваивание переменным a и b значения 2
Весь мир матрица, а мы в нем потоки байтов!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.08.2006 (Пт) 9:18

a=(b=2), так понятнее. Переменной а присваивается результат сравнения b и 2, равны или нет. a=1=2 всегда false ессно.
А вот в C результатом будет присваивание переменным a и b значения 2
А это как?
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.08.2006 (Пт) 9:49

Вот такой вот интересный язык C. В нем оператор присваивания (=)имеет возвращаемое значение и его соответственно можно присвоить лругой переменной и так до бесконечности (хотя наверное какое-то ограничение есть). Т.е. можно смело написать:

A = B = C = D = G = 2

и эти переменные будут равны 2.

З.Ы. Небольшой нюанс. Оператор сравнения в C это ==
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.08.2006 (Пт) 10:17

В Сях оператор присваивания возвращает присвоенное значение. Очень удобно для циклов типа while(next=GetNext()) Process(next);
Аналогичным кодом в VB будет Do: next=GetNext: If 0=next Then Exit Do: Process next: Loop

[edit]пока писал, отвлёкся; Viper опередил.[/edit]
Изображение

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 04.08.2006 (Пт) 10:36

Спасибо, а я то собственно хотел одной строкой a=b=c присвоить значение c переменным а и b. А оно вон как... Хотя можно было бы написать a=c:b=c, но это у меня пока две переменные, а если их больше и они именуются не одним символом... Вообщем, хотел схитрить - не получилось :)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.08.2006 (Пт) 11:05

Попробуй a=b=c=c :wink:
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.08.2006 (Пт) 11:12

Antonariy, не понял юмора :-|
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.08.2006 (Пт) 11:16

Antonariy писал(а):Попробуй a=b=c=c :wink:


шуточки... а если человек всерьез воспримет?
Весь мир матрица, а мы в нем потоки байтов!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.08.2006 (Пт) 11:24

Ну, я так понял, что x=x=x, это то,что я написал, а если цепочка длиннее, типа x=x=x=x=x=x, то это присваивание всем элементам значения последнего. Ессно не проверял, почему и предложил проверить автору.

add: И вот только что заметил, что эта конструкция из С
Последний раз редактировалось Antonariy 04.08.2006 (Пт) 11:26, всего редактировалось 1 раз.
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.08.2006 (Пт) 11:25

Это в C так. А в VB присвоение будет только для первого элемента, a.
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.08.2006 (Пт) 11:39

В VB будет сложнее, чем просто присвоение первому элементу. VB воспримет все символы = кроме первого, как операторы сравнения и будет пытаться сначала произвести последовательность операций сравнения и в конце концов присвоит этот результат первой переменной. В данном случае вначале вычислится значение c = c, результат True (-1). Далее этот результат будет проверен на равенство b, и результат этого сравнения будет присвоен a.
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 71

    TopList