|
В 7.7 ошибка, а в 8.2 работает "А = Б = С;" | ☑ | ||
---|---|---|---|---|
0
Stagor
01.02.12
✎
10:34
|
"А = Б = С;" в 1С это a=b==c; в с++
|
|||
1
Stagor
01.02.12
✎
10:35
|
так, вот, можно ли в 1С присвоить сразу А=Б=С=Д; или нет?
|
|||
2
Maxus43
01.02.12
✎
10:35
|
какой вопрос то?
|
|||
3
Maxus43
01.02.12
✎
10:36
|
присвоить? эта штука вернёт истину или ложь же в 1с, если Б = С тогда А = истина будет
|
|||
4
Reset
01.02.12
✎
10:39
|
(1) Нельзя, описанная конструкция работает так, как ты описал в (0).
|
|||
5
Reaper_1c
01.02.12
✎
10:40
|
И чо? Ну нет в угребищных клюшках булевого типа...
|
|||
6
Stagor
01.02.12
✎
10:40
|
а что тогда означает эта конструкция?
А=Б=С=Д; |
|||
7
Maxus43
01.02.12
✎
10:41
|
(6) есди БСД равны то Истина
|
|||
8
mikecool
01.02.12
✎
10:41
|
а истина если б истина и сравнение с и д истина
|
|||
9
mikecool
01.02.12
✎
10:41
|
(7) а не справа налево идет?
|
|||
10
Stagor
01.02.12
✎
10:42
|
> Б=0;С=0;Д=0;
> А=Б=С=Д; > Сообщить(А); Ложь |
|||
11
Maxus43
01.02.12
✎
10:43
|
странно
|
|||
12
Reaper_1c
01.02.12
✎
10:43
|
Если б равна с а в д лежит истина тогда истина иначе ложь
|
|||
13
Reaper_1c
01.02.12
✎
10:44
|
1Сники...
|
|||
14
Stagor
01.02.12
✎
10:45
|
Т.е. мне не понятно, как разбирается интерпретатором эта конструкция?
> Б=0;С=0;Д=0; > А=Б=С=Д; |
|||
15
Stagor
01.02.12
✎
10:53
|
У кого свежая мысль по (14)?
|
|||
16
Reaper_1c
01.02.12
✎
10:54
|
Первое вхождение "=" в данном случае - оператор присваивания. Остальные - бинарные операторы сравнения.
|
|||
17
Азат
01.02.12
✎
10:54
|
(5) а ты жертва 1986, но никто же тебя за это угребищным не называет...
|
|||
18
Stagor
01.02.12
✎
10:55
|
(16) т.е. в А=Б=С=Д;
это А = (Б=С)=Д? почему тогда А= ложь? |
|||
19
Zapal
01.02.12
✎
10:56
|
(15) сделай Б=Истина
А тоже должно выдать Истина |
|||
20
Reaper_1c
01.02.12
✎
10:57
|
(18) а я кому (12) писал?
|
|||
21
Reaper_1c
01.02.12
✎
10:58
|
(17) Так прально, я ж булевый тип понимаю.
|
|||
22
Азат
01.02.12
✎
10:59
|
(21) зато других элементарных вещей не понимаешь...
|
|||
23
Reset
01.02.12
✎
11:00
|
(14)
> Б=0;С=0;Д=0; > А=Б=С=Д; 1. (C==Д)? результат1 ->Истина 2. (Б=Результат1) ? Результат2->Ложь (Б=0,Результат1=Истина) 3. В А заносится (присваивание) результат выражения, т.е. Результат. Итого А=Ложь. |
|||
24
ptiz
01.02.12
✎
11:01
|
(15) 1С видит строку:
А=Б=С=Д; В ней после "А" идет символ "=" - это оператор присваивания. Всё что справа - вычисляется как логическое выражение и возвращает тип - Булево. Результат вычисления присваивается переменной А. |
|||
25
Reset
01.02.12
✎
11:02
|
(23) читатть "3. В А заносится (присваивание) результат выражения, т.е. Результат2. "
|
|||
26
anddro
01.02.12
✎
11:07
|
(15) проверь выражения
"10"="10"=Истина "10"=Истина="10" вопросы отпадут |
|||
27
Stagor
01.02.12
✎
11:58
|
А=Истина;Б=0;С=0;
Если А=Б=С Тогда Сообщить("Ок"); КонецЕсли; |
|||
28
Stagor
01.02.12
✎
11:58
|
ок
|
|||
29
aleks-id
01.02.12
✎
12:02
|
Б=0;С=0;Д=иСТИНА;
А=Б=С=Д; |
|||
30
Reset
01.02.12
✎
12:03
|
(27) Что непонятно?
|
|||
31
Stagor
01.02.12
✎
12:10
|
(30) Уже все понятно!
|
|||
32
Stagor
01.02.12
✎
12:11
|
странно только, что "Если А=Б=С Тогда"
сравнение происходит с последнего А=(Б=С), а не (А=Б)=С |
|||
33
Reset
01.02.12
✎
12:12
|
Справа налево.
|
|||
34
Aleksey
01.02.12
✎
12:12
|
(10) А что ты ждал? Неопределенно не равно 0 все правильно
|
|||
35
Reset
01.02.12
✎
12:15
|
(33) (32) Точнее, операторы выбираются слева направо; Значение А (левый операнд первого оператора =) требуется сравнить с выражением, стоящим после "=" (правым операндом); соответвеснно, вычисляется это выражение ("Б=С"), и затем сравнивается с левым операндом (А).
|
|||
36
Reset
01.02.12
✎
12:17
|
(34) Там нет Неопределено
|
|||
37
Reset
01.02.12
✎
12:18
|
(36) Точнее, оно сначала есть в переменной А, но это не имеет значение, т.к. в А безусловно присвается булево
|
|||
38
Reset
01.02.12
✎
12:18
|
*не имеет значениЯ (=похрен)
|
|||
39
IamAlexy
01.02.12
✎
12:25
|
вот чтобы мозги не рушить, нормальный человек условия пропишет.. ЕСЛИ и тд...
оно конечно понятно, что одной строкой завсегда прикольно.. но безумно до.ебывают конструкции типа (0) или типа хня = ?(a=b,?(c=d,?(t=h,f ,2 ) ,?(f=5, 1,2 ) ) ,?(f, 3,3 ) ); |
|||
40
Steel_Wheel
01.02.12
✎
12:27
|
(14) Первый символ равенства интерпретируется как присваивание, остальные, как сравнение
|
|||
41
ковер
01.02.12
✎
12:32
|
(39) краткость сестра таланта. зачем раздувать код, если можно лаконичнее описать теже действия
|
|||
42
Asmody
01.02.12
✎
12:35
|
(39) нормальная конструкция. раскидай её только по строкам, а то через неделю уже сам охренеешь от такого условия
|
|||
43
Asmody
01.02.12
✎
12:36
|
(42)+ я в 7.7 часто использовал, ибо там нет "ленивого" вычисления условий
|
|||
44
aleks-id
01.02.12
✎
12:41
|
разберем классическое А=Б=С=Д
первый раз "=" интерпретируется как присваивание. второй и следующие разы "=" интерпретируется как сравнение. поехали по шагам при Б=0;С=0;Д=0; первый шаг: (Б=С) (результат - булево, запишем его как Х) второй шаг: (Х=Д) (Х - булево, Д - число, ясен пень они не будут равны) третий шаг: А= результат сравнения из второго шага. будет всегда ложь. как то так... |
|||
45
Stagor
01.02.12
✎
15:08
|
Б=0;С=6;Д=Ложь;
А=Б=С=Д; Сообщить(А); Истина точно слева направо! |
|||
46
Stagor
01.02.12
✎
15:08
|
(43) В 8.2 Ленивые вычисления параметров?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |