Привет Harry!
31 Jan 05 08:54, Harry Zhurov писал Alex Mogilnikov:AM>> А обращение по неинициализированному AM>> указателю вообще диагностировать невозможно...
HZ> Имхо, не только.
Hе только. Это я просто примерпривел.
HZ> Вот ptr2 - ptr1 - что тут страшного? Аппаратное HZ> исключение может возникнуть? Hе представляю.
Hе запрещено реализовать это вычисление таким способом, при котором это возможно.
HZ>>> implementation-defined - то, что Стандарт не определяет или HZ>>> не может определить, но это должно быть обязательно HZ>>> определено реализацией.
AM>> И это - частный случай unspecified.
HZ> По ходу, нет.
Как же нет, если одно понятие определено через другое???
3.11 [#1] implementation-defined behavior unspecified behavior where bla-bla-bla-bla...AM>> Довольно странно применять здесь слово "возникнуть".
HZ> А какое слово ты предлагаешь?
Hу, я бы сказал "имеет место при <условие UB>". Хотя, как я понял, все равно мы оно и то же одразумеваем. Поэтому много поскипал.
AM>> ИМХО все проще. Есть область условий, при которых поведение AM>> определено. Компилятор обязан сгенерить такой код, который при AM>> любых условиях, лежащих в этой области, дает верный результат.
HZ> Вот а++ - это как? Обязан ли тут компилятор генерить код?
Обязан если на 100% не уверен в взникновении переполнения. Если есть хоть один шанс, что a будет иметь допустимое значение, выражение обязано быть вычислено.
HZ> Или HZ> имеет право сказать, что, дескать, парни, тут у вас может HZ> переполнение HZ> возникнуть, я такое генерить не буду, до свидания?
int a if(a == INT_MAX) a++;
Последняя строчка гарантированно дает переполнение, здесь, как я понимаю, компилятор имеет право код не генерить.
HZ>>> int a = f(&Array[i], &Array[j]);
AM>> А здесь-то почему?
HZ> Как это почему? Вот представь, что N == 100, i == 1000; j == 2000. HZ> И на этапе компиляции это не известно. Только на рантайме. Если, HZ> конечно, ты не примешь специальных мер, которые будут на рантайме же HZ> контролировать соответствие индексов размерности массива. И другое HZ> дело, если i и j всегда лежат в пределах сотни.
Так вроде бы в стандарте (лень перечитывать) есть оговорка, что указатели могут указывать и за объявленный размер массива...
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Сисоп спит - почта идет...