Перш за все, це допоможе ознайомитись з Розробкою мови
C для dmr Отримайте деякі уявлення про деякі примхи С, особливо
якщо мова йде про семантику масиву (в основному, викрийте BCPL і B
для більшості з них).
As for the question "[w]hy not just enforce that
index[array]
is invalid, for clarity's sake," what
would such a check buy you in exchange for the cost of performing
it? The form almost never appears outside of the IOCCC, so it's not like it's a major
problem in production code (compared to the use of, say,
gets
, or unchecked array accesses (which disallowing
i[a]
won't help with), or ). It's not a bug;
it doesn't introduce any undefined behavior; it doesn't introduce
any security holes not already present with a[i]
; the
only complaints against it are stylistic in nature.
Це схоже на запитання, чому дійсно є T * p
і
T * p
; там немає "чому", за винятком випадків
синтаксису мови. Там нічого навмисного позаду, що дозволяє
обидва, це лише функція роботи граматики. Те ж саме з a
[i]
і i [a]
. Професійні програмісти є (як
правило) дорослими та не навмисне не вводять плутанини,
якщо це не обґрунтовано, тому більшість, природно,
використовуватиме a [i]
.
Ви в основному намагаєтесь захищатись від проблеми, яка
насправді не існує.