|
В 7.7 ошибка, а в 8.2 работает "А = Б = С;" | ☑ | ||
---|---|---|---|---|
0
Stagor
01.02.12
✎
10:34
|
"А = Б = С;" в 1С это a=b==c; в с++
|
4 39 |
||
1
Stagor
01.02.12
✎
10:35
|
так, вот, можно ли в 1С присвоить сразу А=Б=С=Д; или нет?
|
4 |
||
2
Maxus43
01.02.12
✎
10:35
|
какой вопрос то?
|
|||
3
Maxus43
01.02.12
✎
10:36
|
присвоить? эта штука вернёт истину или ложь же в 1с, если Б = С тогда А = истина будет
|
|||
4
Reset
01.02.12
✎
10:39
|
||||
5
Reaper_1c
01.02.12
✎
10:40
|
И чо? Ну нет в угребищных клюшках булевого типа...
|
17 |
||
6
Stagor
01.02.12
✎
10:40
|
а что тогда означает эта конструкция?
А=Б=С=Д; |
7 |
||
7
Maxus43
01.02.12
✎
10:41
|
(6) есди БСД равны то Истина
|
9 |
||
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;
> А=Б=С=Д; > Сообщить(А); Ложь |
34 |
||
11
Maxus43
01.02.12
✎
10:43
|
странно
|
|||
12
Reaper_1c
01.02.12
✎
10:43
|
Если б равна с а в д лежит истина тогда истина иначе ложь
|
20 |
||
13
Reaper_1c
01.02.12
✎
10:44
|
1Сники...
|
|||
14
Stagor
01.02.12
✎
10:45
|
Т.е. мне не понятно, как разбирается интерпретатором эта конструкция?
> Б=0;С=0;Д=0; > А=Б=С=Д; |
15 23 40 |
||
15
Stagor
01.02.12
✎
10:53
|
У кого свежая мысль по (14)?
|
19 24 26 |
||
16
Reaper_1c
01.02.12
✎
10:54
|
Первое вхождение "=" в данном случае - оператор присваивания. Остальные - бинарные операторы сравнения.
|
18 |
||
17
Азат
01.02.12
✎
10:54
|
(5) а ты жертва 1986, но никто же тебя за это угребищным не называет...
|
21 |
||
18
Stagor
01.02.12
✎
10:55
|
20 |
|||
19
Zapal
01.02.12
✎
10:56
|
(15) сделай Б=Истина
А тоже должно выдать Истина |
|||
20
Reaper_1c
01.02.12
✎
10:57
|
||||
21
Reaper_1c
01.02.12
✎
10:58
|
(17) Так прально, я ж булевый тип понимаю.
|
22 |
||
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. В А заносится (присваивание) результат выражения, т.е. Результат. Итого А=Ложь. |
25 |
||
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
|
||||
27
Stagor
01.02.12
✎
11:58
|
А=Истина;Б=0;С=0;
Если А=Б=С Тогда Сообщить("Ок"); КонецЕсли; |
30 |
||
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 |
||
31
Stagor
01.02.12
✎
12:10
|
(30) Уже все понятно!
|
|||
32
Stagor
01.02.12
✎
12:11
|
странно только, что "Если А=Б=С Тогда"
сравнение происходит с последнего А=(Б=С), а не (А=Б)=С |
35 |
||
33
Reset
01.02.12
✎
12:12
|
Справа налево.
|
35 |
||
34
Aleksey
01.02.12
✎
12:12
|
(10) А что ты ждал? Неопределенно не равно 0 все правильно
|
36 |
||
35
Reset
01.02.12
✎
12:15
|
||||
36
Reset
01.02.12
✎
12:17
|
(34) Там нет Неопределено
|
37 |
||
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 ) ); |
41 42 |
||
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 |
||
43
Asmody
01.02.12
✎
12:36
|
(42)+ я в 7.7 часто использовал, ибо там нет "ленивого" вычисления условий
|
46 |
||
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 Ленивые вычисления параметров?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |