Здравствуйте, Vain, Вы писали:
V>Здравствуйте, jyuyjiyuijyu, Вы писали:
V>>>7. Accessing an object designated by a volatile lvalue (3.10), modifying an object, calling a library I/O V>>>function, or calling a function that does any of those operations are all side effects, which are changes in the V>>>state of the execution environment. V>>>[/q] V>>>В примере было чтение не volatile переменной и что теперь? Как себя компилятор должен повести? J>>тоесть отличаются побочные эффекты для J>>&& || и для , ?: которые вляют на порядок вычисления ? V>А ещё они чем отличаются тоже будешь выискивать? А не проще ли обойти болото, а не лезть в него?
ну а как вам такой код из стандарта
f(a, (t=3, t+2), c) : t == 5
здесь точно такой же случай присваивание а следом чтение
значит все таки есть гарантия ?
отличаются они только тем что тут чтение и изменение
а там просто чтение
не мне бы конечно было пофиг но я часто использую этот оператор , (запятая)
поэтому и столько вопросов получается если раньше я его без зазрения совести
использовал то теперь вская муть будет мнится ? поэтому и хотелось бы разобратся
jyuyjiyuijyu:
V>>>>7. Accessing an object designated by a volatile lvalue (3.10), modifying an object, calling a library I/O V>>>>function, or calling a function that does any of those operations are all side effects, which are changes in the V>>>>state of the execution environment. V>>>>[/q] V>>>>В примере было чтение не volatile переменной и что теперь? Как себя компилятор должен повести? J>>>тоесть отличаются побочные эффекты для J>>>&& || и для , ?: которые вляют на порядок вычисления ? V>>А ещё они чем отличаются тоже будешь выискивать? А не проще ли обойти болото, а не лезть в него? J>ну а как вам такой код из стандарта J>f(a, (t=3, t+2), c) : t == 5 J>здесь точно такой же случай присваивание а следом чтение J>значит все таки есть гарантия ?
Для абстрактной машины есть: если t имеет целочисленный тип, то изменение объекта t в t=3 должно быть завершено до чтения t в t+2. Компилятор должен обеспечить такой же видимый результат работы программы, как если бы она выполнялась на абстрактной машине. Бóльших гарантий и не нужно.
Здравствуйте, Masterkent, Вы писали:
M>jyuyjiyuijyu:
V>>>>>7. Accessing an object designated by a volatile lvalue (3.10), modifying an object, calling a library I/O V>>>>>function, or calling a function that does any of those operations are all side effects, which are changes in the V>>>>>state of the execution environment. V>>>>>[/q] V>>>>>В примере было чтение не volatile переменной и что теперь? Как себя компилятор должен повести? J>>>>тоесть отличаются побочные эффекты для J>>>>&& || и для , ?: которые вляют на порядок вычисления ? V>>>А ещё они чем отличаются тоже будешь выискивать? А не проще ли обойти болото, а не лезть в него? J>>ну а как вам такой код из стандарта J>>f(a, (t=3, t+2), c) : t == 5 J>>здесь точно такой же случай присваивание а следом чтение J>>значит все таки есть гарантия ?
M>Для абстрактной машины есть: если t имеет целочисленный тип, то изменение объекта t в t=3 должно быть завершено до чтения t в t+2. Компилятор должен обеспечить такой же видимый результат работы программы, как если бы она выполнялась на абстрактной машине. Бóльших гарантий и не нужно.
ну значит и этот код для абстрактной машины значит тоже что и я думаю
а как она это обеспечит неважно пусть хоть на луну слетает между делом
#define def(c) (__macro<typeof(c)>::_ = c)
#define acc(c) (__macro<typeof(c)>::_)
по сути это же
((__macro<typeof(c)>::_ = c), (__macro<typeof(c)>::_ <> '$') ? true : false)
ни о каком чтении раньше присваивания и речи быть не можеть же ?