Do you have a question? Post it now! No Registration Necessary

Re: Ошибка в вычислениях адресов у GCC ?
Привет Harry!
28 Jan 05 07:53, Harry Zhurov писал Yuriy K:
HZ> И где тут английским по белому написано, что _не_ _определено_?
HZ> Где слово undefined? Тут вообще не рассматривается обсуждаемый случай.
ISO/ IEC JTC1/SC22/WG14 N843
[...]
4. Conformance
[...]
Undefined behavior is otherwise indicated in
this International Standard by the words ``undefined
behavior'' or by the omission of any explicit definition of
behavior. There is no difference in emphasis among these
three; they all describe ``behavior that is undefined''.
HZ> А про него, по ходу, правильнее сказать "зависит от реализации"?
3.11
[#1] implementation-defined behavior
unspecified behavior where each implementation documents how
the choice is made
[...]
[#1] unspecified behavior
behavior where this International Standard provides two or
more possibilities and imposes no requirements on which is
chosen in any instance
AFAIK по обсуждаемому случаю в стандарте нет "two or more possibilities".
Стало быть, именно undefined.
HZ> Про undefined там сказано только то, что если результат операции
HZ> (вычитания адреса одного элемента массива из адреса другого элемента -
HZ> т.е. тоже не наш случай) не представим типом ptrdiff_t, то поведение
HZ> не определено. Хотя мне не понятно, почему - если я от одного целого
HZ> (адрес - целое) отнял другое целое, то получил тоже какое-то целое.
Указатель - не адрес.
HZ> Про то, определено это _значение_ или не определено, обсуждаем, но
HZ> почему тут _поведение-то_ неопределено? Hеопределенное поведение - это
HZ> когда может произойти все, что угодно вплоть до падения программы. Hе
HZ> понятно, как такое безобидное действие, как вычитание одного адреса из
HZ> другого, может привести к каким-то негативным последствиям??! Речь
HZ> ведь не идет об использовании результата!
Hу вот такие правила приняли, что согласно им имеет право:
[#2] NOTE Possible undefined behavior ranges from ignoring |
the situation completely with unpredictable results, to
behaving during translation or program execution in a
documented manner characteristic of the environment (with or
without the issuance of a diagnostic message), to
terminating a translation or execution (with the issuance of
a diagnostic message).
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... Посетители должны общаться по сети.
28 Jan 05 07:53, Harry Zhurov писал Yuriy K:
HZ> И где тут английским по белому написано, что _не_ _определено_?
HZ> Где слово undefined? Тут вообще не рассматривается обсуждаемый случай.
ISO/ IEC JTC1/SC22/WG14 N843
[...]
4. Conformance
[...]
Undefined behavior is otherwise indicated in
this International Standard by the words ``undefined
behavior'' or by the omission of any explicit definition of
behavior. There is no difference in emphasis among these
three; they all describe ``behavior that is undefined''.
HZ> А про него, по ходу, правильнее сказать "зависит от реализации"?
3.11
[#1] implementation-defined behavior
unspecified behavior where each implementation documents how
the choice is made
[...]
[#1] unspecified behavior
behavior where this International Standard provides two or
more possibilities and imposes no requirements on which is
chosen in any instance
AFAIK по обсуждаемому случаю в стандарте нет "two or more possibilities".
Стало быть, именно undefined.
HZ> Про undefined там сказано только то, что если результат операции
HZ> (вычитания адреса одного элемента массива из адреса другого элемента -
HZ> т.е. тоже не наш случай) не представим типом ptrdiff_t, то поведение
HZ> не определено. Хотя мне не понятно, почему - если я от одного целого
HZ> (адрес - целое) отнял другое целое, то получил тоже какое-то целое.
Указатель - не адрес.
HZ> Про то, определено это _значение_ или не определено, обсуждаем, но
HZ> почему тут _поведение-то_ неопределено? Hеопределенное поведение - это
HZ> когда может произойти все, что угодно вплоть до падения программы. Hе
HZ> понятно, как такое безобидное действие, как вычитание одного адреса из
HZ> другого, может привести к каким-то негативным последствиям??! Речь
HZ> ведь не идет об использовании результата!
Hу вот такие правила приняли, что согласно им имеет право:
[#2] NOTE Possible undefined behavior ranges from ignoring |
the situation completely with unpredictable results, to
behaving during translation or program execution in a
documented manner characteristic of the environment (with or
without the issuance of a diagnostic message), to
terminating a translation or execution (with the issuance of
a diagnostic message).
Всего наилучшего, [Team PCAD 2000]
Алексей М.
... Посетители должны общаться по сети.