Имя: Пароль:
1C
1С v8
Интересный код в типовой 1с, никогда не сталкивался с таким.
0 Kuzen
 
14.07.11
12:46
Перем а,б;
а = б = "1";
Сообщить("а:"+а);
Сообщить("б:"+б);

В контексте типовой бухии выглядит так:
           // Текст назначение платежа будет обновлен только при условии, что ранее он был сформирован автоматически
           ОбновитьНазначениеПлатежа = ТекстНазначение = ТекстНазначенияПлатежа(мТекущийСчетКонтрагента, мТекущийДоговорКонтрагента, ПеречислениеНалога);
1 Ненавижу 1С
 
гуру
14.07.11
12:48
(0) я бы скобочки все таки поставил
2 Ненавижу 1С
 
гуру
14.07.11
12:49
вот так:

бновитьНазначениеПлатежа = (ТекстНазначение=ТекстНазначенияПлатежа(мТекущийСчетКонтрагента, мТекущийДоговорКонтрагента, ПеречислениеНалога));
3 Fram
 
14.07.11
12:49
(0) ну и что непонятного?
4 Sarmen
 
14.07.11
12:53
Человек же не сказал в сабже, что "непонятно". Просто сказал - "интересно"! И - "никогда не сталкивался".
5 Megas
 
14.07.11
12:53
(3) Кто пишет что непонятно? .. Просто забавно и необычно.
6 Kuzen
 
14.07.11
12:53
Перем а,б;
а = б = "1";
Сообщить("а: '"+а+"' ТипЗнч: "+ТипЗнч(б));
Сообщить("б: '"+б+"' ТипЗнч: "+ТипЗнч(б));

Присваивания нет.

Сообщить выводит:

а: 'Нет' ТипЗнч: Не определено
б: '' ТипЗнч: Не определено
7 Kuzen
 
14.07.11
12:55
а: 'Нет' ТипЗнч: Булево
б: '' ТипЗнч: Не определено
8 Рэйв
 
14.07.11
12:56
(6)а получает булево сравнения б с "1"
9 Рэйв
 
14.07.11
12:57
(6)"Не ходил ты , приятель, в штыковую"(С)
на с++
10 Kuzen
 
14.07.11
12:58
(8) Забавное сравнение.
11 Рэйв
 
14.07.11
12:59
(10) Нормальное
Ничем не отличается от

Если б="1" Тогда...

оно тоже возвращает ложь в Если
12 acsent
 
14.07.11
13:00
Код выпадет, тк б = неопредедлено
13 Web00001
 
14.07.11
13:00
как нет присваивания, переменной а присваивается результат сравнения б = 1, что ты имеешь счастье лицезреть в выводе команды Сообщить(), для уточнения сделай б = 1 вначале
14 Рэйв
 
14.07.11
13:00
в плюсах оператор сравнения отличается от операьтора присваивания.  А тут вот путаница
15 Megas
 
14.07.11
13:01
ИМХО
Если б=1 тогда ...  лучше так как не выносит мозг!
16 hhhh
 
14.07.11
13:01
(10) а что тут забавного? Если пишешь

Если в = "1" Тогда
   а = Истина;
Иначе
   а = Ложь;
КонецЕсли;

тоже для тебя забавно?
17 amiko
 
14.07.11
13:02
Код как код. я такие логические операции в коде постоянно использую, т.к. лень писать если .. тогда .. конец
18 hhhh
 
14.07.11
13:02
(12) не выпадет. Выпадает только в случаях операции больше-меньше.
19 Ненавижу 1С
 
гуру
14.07.11
13:04
(14) нет путаницы в общем, все однозначно
20 Kuzen
 
14.07.11
13:05
(16) А так в переводе на если что будет?

а = б ="1"="2"="3";
21 Kuzen
 
14.07.11
13:06
или так а = б +"1"="2"="3";
22 Fram
 
14.07.11
13:07
(21) похоже так и не понял что к чему?
23 Kuzen
 
14.07.11
13:08
(22) В случае а = б = "1"; понятно
24 Рэйв
 
14.07.11
13:08
(19)Ну не путаница.Слабая наглядность для неокрепших умов:-)
25 Kuzen
 
14.07.11
13:10
например
   б = "1";
   а = б ="1";
а = истина

в случае:
   б = "1";
   а = б ="1"="1";
а = ложь
26 Kuzen
 
14.07.11
13:11
какое сравнение происходит во 2 м случае:
б ="1"="1"
б="1" или б="1"
б="1" и б="1"

или еще что то
27 Staffa
 
14.07.11
13:12
(25) ну, правильно:
Истина <> "1"
28 Ненавижу 1С
 
гуру
14.07.11
13:12
(25) вот тут
х=((а=б)=с);
х=(а=(б=с));
могут различатся результаты или нет?
29 Рэйв
 
14.07.11
13:12
"1"="1";

дает Истина

б="1" и <>истина
поэтому а=Ложь
30 Рэйв
 
14.07.11
13:13
(29)->(26)
31 Kuzen
 
14.07.11
13:14
(28) Нет
32 Kuzen
 
14.07.11
13:14
(28) х=с
33 Kuzen
 
14.07.11
13:20
(29)
б = Истина;
а = б ="1"="1";

результат
а = Нет

Почему ведь
(б=Истина) = ("1"="1" = Истина) = Истина
34 Fram
 
14.07.11
13:21
(33) порядок выполнения сравнения как в арифметике - слева направо
35 Fram
 
14.07.11
13:22
+(34) т.е.
б ="1" - это ложь, т.к. истина не равна "1"
ложь = "1" это тоже ложь, т.к. ложь не равна "1"
36 Kuzen
 
14.07.11
13:23
(34) теперь ясно
37 Kuzen
 
14.07.11
13:24
Истина=1=1=2-1=5-4
38 Fram
 
14.07.11
13:26
(37) тут уже типизация 1С срабатывает так что истина равна единице
39 Рэйв
 
14.07.11
13:26
(37) Ложь
Ничего ты так и не понял:-)
40 Рэйв
 
14.07.11
13:26
(38)А..Ну может быть
41 Рэйв
 
14.07.11
13:27
Если взть цифры побольше то будет ложь
42 Fram
 
14.07.11
13:28
(40) сам как то немного удивился когда наткнулся, что истина равна единице
43 Fram
 
14.07.11
13:29
(37) и это.. сначала выполняются вычисления, потом сравнения
44 Fram
 
14.07.11
13:31
вообще, эту тему в базу знаний можно закинуть
45 Kuzen
 
14.07.11
13:33
(41) Тогда так: 10 =10=(5=(15-10))
46 Kuzen
 
14.07.11
13:33
будет истина
47 Рэйв
 
14.07.11
13:35
(46)Будет ложь:)))
48 Fram
 
14.07.11
13:35
(47) вообще то он прав - истина будет
49 Fram
 
14.07.11
13:35
забавная тема ))
50 Рэйв
 
14.07.11
13:36
5=(15-10)
истина
Тогда так: 10 =10=истина

ложь
:-)
51 Fram
 
14.07.11
13:36
(46) все верно приоритет скобок никто не отменял
52 Kuzen
 
14.07.11
13:37
(48) Ученик превзошел своего учителя :)
53 Рэйв
 
14.07.11
13:37
(50)->(48)
54 Рэйв
 
14.07.11
13:37
(52)Неа:-)..Не превзашел
55 Fram
 
14.07.11
13:38
(50) почему ложь то?!
10=10 это истина
истина=истина это тоже истина
слева направо, чувак
56 Рэйв
 
14.07.11
13:39
(55)
справа.налево:-)
57 Рэйв
 
14.07.11
13:39
10=истина  
ложь
10=ложь
ложь
:-))
58 Fram
 
14.07.11
13:41
(57) настырный какой http://gyazo.com/2af361cb413270a4f7bff33277612040.png
59 Рэйв
 
14.07.11
13:42
(58)Ладно, я уже сам посмотрел:-)  дествительно в табло истина

Но ведь слева жешь вроде направо все таки?
60 Рэйв
 
14.07.11
13:42
по всем канонам программирования
61 Рэйв
 
14.07.11
13:43
ой то есть наоборот. справа-налево
62 Рэйв
 
14.07.11
13:44
Если судить по логике справа налево, то я прав..Если по табло 1С , то я неправ:-)
Интересная картина:)
63 Fram
 
14.07.11
13:45
(62) 1С выполняет слева направо.. смирись
64 Рэйв
 
14.07.11
13:46
(63)Да? Вот придурки.А нафига?
65 Рэйв
 
14.07.11
13:47
ну да.Если смотреть слева, то истина
66 sda553
 
14.07.11
13:59
Справа налево выполняется присваивание, видимо это тебя смутило, а так большинство языков программирования выполняет выражение все таки слева на право
67 Рэйв
 
14.07.11
14:03
(66)Точно.Ввели бы уже правда  == ...
68 Рэйв
 
14.07.11
14:03
т.е = =
69 Kuzen
 
14.07.11
14:28
(58) А у меня кстати пишет не Истина а Да. Это в 8.2
70 Megas
 
14.07.11
15:17
(69) А у меня пишет "Есть" или "Так точно" причём что бы не сравнивал! 8.3
71 Starhan
 
14.07.11
15:21
(70) Хорошо хоть не "нахрен" и "похрен"
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn