Неспецифіко́вана поведі́нка (англ. unspecified behavior) або поведі́нка, що визнача́ється реаліза́цією (англ. implementation-defined behavior) — поведінка комп'ютерної програми, яка може відрізнятися на різних платформах і компіляторах, оскільки специфікація мови програмування пропонує кілька допустимих варіантів реалізації якоїсь мовної конструкції. На відміну від невизначеної поведінки, програма з неспецифікованою поведінкою з точки зору відповідності специфікації мови не вважається помилковою; за неспецифікованої поведінки, специфікація зазвичай обмежує можливі варіанти поведінки, хоча й не зводить їх до єдиного припустимого.
Термінологія
Відповідно до стандарту мови C99,
3.4.1. поведінка, визначена реалізацією (англ. implementation-defined behavior) — неспецифікована поведінка, вибір якої документується окремо в кожній реалізації;
3.4.3. неспецифікована поведінка (англ. unspecified behavior) — використання неспецифікованого значення або інша поведінка, де цей Міжнародний стандарт надає два або більше варіантів і не накладає жодних інших вимог на вибір у кожному конкретному випадку.Оригінальний текст (англ.)3.4.1 implementation-defined behaviorunspecified behavior where each implementation documents how the choice is made
[…]
3.4.3 unspecified behavior
use of an unspecified value, or other behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance— ISO/IEC 9899:201x
Згідно зі стандартом мови ,
- 1.3.5. поведінка, визначена реалізацією (англ. implementation-defined behavior) — поведінка правильно побудованої програмної конструкції з правильними даними, що залежить від реалізації і яка має бути документована кожною реалізацією;
- 1.3.13. неспецифікована поведінка (англ. unspecified behavior) — поведінка правильно побудованої програмної конструкції з правильними даними, що залежить від реалізації. Реалізація має документувати вибір поведінки. [Примітка: як правило, діапазон допустимих поведінок зазначено в цьому Міжнародному стандарті.]
Оригінальний текст (англ.)1.3.5 implementation-defined behaviorbehavior, for a well-formed program construct and correct data, that depends on the implementation and that each implementation shall document.
[…]
1.3.13 unspecifed behavior
behavior, for a well-formed program construct and correct data, that depends on the implementation. The implementation is not required to document which behavior occurs. [Note: usually, the range of possible
behaviors is delineated by this International Standard. ]— ISO/IEC 14882:2003(E)
Приклади
У Сі і C++ (на відміну мови Java) порядок обчислення параметрів функції є неспецифікованим; отже, в програмі, наведеній нижче, порядок, у якому будуть надруковані рядки «F» та «G», залежить від компілятора.
#include <iostream> int f() { std::cout << "In f\n"; return 3; } int g() { std::cout << "In g\n"; return 4; } int sum(int i, int j) { return i + j; } int main() { return sum(f(), g()); }
Класичним прикладом поведінки, що визначається реалізацією (неспецифікованої поведінки, яка має документуватися реалізацією), є розмір типів даних; наприклад long у різних компіляторах та операційних системах може мати розмір 32 або 64 біт. Програма, яка передбачає, що в один long завжди поміститься вказівник, некоректно працюватиме на деяких платформах (наприклад, у Windows x64).
Див. також
Примітки
- Н. Д. Любашенко (2019). ПРОГРАМУВАННЯ-2. Мова С. КОНСПЕКТ ЛЕКЦІЙ (PDF). К.: КПІ ім. Ігоря Сікорського. с. 101.
- ISO/IEC 9899:201x Committee Draft — August 11, 2008 (PDF) (англ.). Архів (PDF) оригіналу за 11 квітня 2012. Процитовано 1 грудня 2009.
- Becker, Pete (16 травня 2006). Living By the Rules. . Процитовано 26 листопада 2009.
- size of long integer type on different architecture and OS (англ.). Intel Software Network. Архів оригіналу за 11 квітня 2012. Процитовано 1 грудня 2009.
Посилання
- RSDN FAQ: Яка між ними різниця (unspecified та undefined)? (рос.)
- Мобільність на рівні вихідних текстів (рос.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nespecifiko vana povedi nka angl unspecified behavior abo povedi nka sho viznacha yetsya realiza ciyeyu angl implementation defined behavior povedinka komp yuternoyi programi yaka mozhe vidriznyatisya na riznih platformah i kompilyatorah oskilki specifikaciya movi programuvannya proponuye kilka dopustimih variantiv realizaciyi yakoyis movnoyi konstrukciyi Na vidminu vid neviznachenoyi povedinki programa z nespecifikovanoyu povedinkoyu z tochki zoru vidpovidnosti specifikaciyi movi ne vvazhayetsya pomilkovoyu za nespecifikovanoyi povedinki specifikaciya zazvichaj obmezhuye mozhlivi varianti povedinki hocha j ne zvodit yih do yedinogo pripustimogo TerminologiyaVidpovidno do standartu movi C99 3 4 1 povedinka viznachena realizaciyeyu angl implementation defined behavior nespecifikovana povedinka vibir yakoyi dokumentuyetsya okremo v kozhnij realizaciyi 3 4 3 nespecifikovana povedinka angl unspecified behavior vikoristannya nespecifikovanogo znachennya abo insha povedinka de cej Mizhnarodnij standart nadaye dva abo bilshe variantiv i ne nakladaye zhodnih inshih vimog na vibir u kozhnomu konkretnomu vipadku Originalnij tekst angl 3 4 1 implementation defined behavior unspecified behavior where each implementation documents how the choice is made 3 4 3 unspecified behavior use of an unspecified value or other behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance ISO IEC 9899 201x Zgidno zi standartom movi C 1 3 5 povedinka viznachena realizaciyeyu angl implementation defined behavior povedinka pravilno pobudovanoyi programnoyi konstrukciyi z pravilnimi danimi sho zalezhit vid realizaciyi i yaka maye buti dokumentovana kozhnoyu realizaciyeyu 1 3 13 nespecifikovana povedinka angl unspecified behavior povedinka pravilno pobudovanoyi programnoyi konstrukciyi z pravilnimi danimi sho zalezhit vid realizaciyi Realizaciya maye dokumentuvati vibir povedinki Primitka yak pravilo diapazon dopustimih povedinok zaznacheno v comu Mizhnarodnomu standarti Originalnij tekst angl 1 3 5 implementation defined behavior behavior for a well formed program construct and correct data that depends on the implementation and that each implementation shall document 1 3 13 unspecifed behavior behavior for a well formed program construct and correct data that depends on the implementation The implementation is not required to document which behavior occurs Note usually the range of possible behaviors is delineated by this International Standard ISO IEC 14882 2003 E PrikladiU Si i C na vidminu movi Java poryadok obchislennya parametriv funkciyi ye nespecifikovanim otzhe v programi navedenij nizhche poryadok u yakomu budut nadrukovani ryadki F ta G zalezhit vid kompilyatora include lt iostream gt int f std cout lt lt In f n return 3 int g std cout lt lt In g n return 4 int sum int i int j return i j int main return sum f g Klasichnim prikladom povedinki sho viznachayetsya realizaciyeyu nespecifikovanoyi povedinki yaka maye dokumentuvatisya realizaciyeyu ye rozmir tipiv danih napriklad long u riznih kompilyatorah ta operacijnih sistemah mozhe mati rozmir 32 abo 64 bit Programa yaka peredbachaye sho v odin long zavzhdi pomistitsya vkazivnik nekorektno pracyuvatime na deyakih platformah napriklad u Windows x64 Div takozhBagatoplatformnistPrimitkiN D Lyubashenko 2019 PROGRAMUVANNYa 2 Mova S KONSPEKT LEKCIJ PDF K KPI im Igorya Sikorskogo s 101 ISO IEC 9899 201x Committee Draft August 11 2008 PDF angl Arhiv PDF originalu za 11 kvitnya 2012 Procitovano 1 grudnya 2009 Becker Pete 16 travnya 2006 Living By the Rules Procitovano 26 listopada 2009 size of long integer type on different architecture and OS angl Intel Software Network Arhiv originalu za 11 kvitnya 2012 Procitovano 1 grudnya 2009 PosilannyaRSDN FAQ Yaka mizh nimi riznicya unspecified ta undefined ros Mobilnist na rivni vihidnih tekstiv ros