[an error occurred while processing this directive]
|
ISO/IEC JTC1/SC22/WG14 N843; August 3, 1998
3.18
[#1] undefined behavior
behavior, upon use of a nonportable or erroneous program
construct, of erroneous data, or of indeterminately valued
objects, for which this International Standard imposes no
requirements[#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).[#3] EXAMPLE An example of undefined behavior is the
behavior on integer overflow.
И свежая редакция:
ISO/IEC 9899:1999 (E)
3.4.3
1 undefined behavior
behavior, upon use of a nonportable or erroneous program construct or of erroneous
for which this International Standard imposes no requirements
2 NOTE Possible undefined behavior ranges from ignoring the situation completely with
results, to behaving during translation or program execution in a documented manner characteristic
environment (with or without the issuance of a diagnostic message), to terminating a
execution (with the issuance of a diagnostic message).
3 EXAMPLE An example of undefined behavior is the behavior on integer overflow.
Так что из этого параграфа совершенно явно следует, что использование целочисленного переполнения есть то самое "undefined behavior" и может привести к чему угодно вплоть до аварийного завершения компилятора или программы. Про АЛУ это я просто так к слову сказал, естесвенно в стандарте про него ничего нет, но приведенной мной цитаты вполне достаточно для прояснения ситуации в целом.
А про тип "u16" - как он определен в "большинстве компилеров" мне совершенно не интересно. Это одна вода. Речь про стандарт. В свою очередь, плиз ссылочку на параграф стандарта, где прописано что это за "u16" и каковы его параметры.
E-mail: info@telesys.ru