История изменений
Исправление lovesan, (текущая версия) :
Это оптимизация по стандарту которые может выполнить любой компилятор.
Нет, это по-моему, ты тупой. Ты каким-то хером закладываешься на то как компилятор раскидал переменные в памяти, что естественно, делать нельзя, и пытаешься этим опровергнуть то что указатель это просто число. Это, я не знаю, это не тупость даже, это шизофрения какая-то. Между этими вещами вообще связи нет. Я, причем, тебе привел пример того - когда эти переменные лежат там где надо, и их можно достать примерно таким образом как ты хочешь.
Если сейчас MSVC его не выполняет, это не значит что у них не будет времени что бы заняться оптимизациями в будущем.
Разное расположение в памяти это, возможно, даже не оптимизация, а просто оптимизатор GCC включает другой алгоритм раскраски виртуальных регистров вот и все(обход дерева с другого конца края итд), поэтому переменные местами меняются. MSVC же складывает их в том порядке в котором были написаны.
Что, еще раз, не дает тебе права закладываться на их взаимное расположение вообще от слова совсем. И GCC очевидно считает также(впрочем выкидывание условия все-равно тупняк, но GCC таким хорошо известен). Что еще раз, никак не опровергает тезис о том что указатель это число.
Может просто выучить язык? Уже достаточно софта который не умеет собираться в -O2
Нет, это тебе, мне кажется, надо выучить язык, чтобы ты не закладывался на расположение статических переменных в памяти относительно друг друга. И как я уже сказал, это вообще не имеет отношения к теме о том что указатель это всего лишь номер ячейки в памяти.
Ну и да, как ты контрпример то, с функцией foo, объяснишь?
Возможно ты не понимаешь, но примеры могут быть гораздо сложнее, где ты из за незнания языка даже ничего плохого и не увидишь, а потом взрыв, это просто самый простой и короткий пример.
Я все еще жду хотя бы одного примера, опровергающего тезис «указатель - это всего лишь число».
Исходная версия lovesan, :
Это оптимизация по стандарту которые может выполнить любой компилятор.
Нет, это по-моему, ты тупой. Ты каким-то хером закладываешься на то как компилятор раскидал переменные в памяти, что естественно, делать нельзя, и пытаешься этим опровергнуть то что указатель это просто число. Это, я не знаю, это не тупость даже, это шизофрения какая-то. Между этими вещами вообще связи нет. Я, причем, тебе привел пример того - когда эти переменные лежат там где надо, и их можно достать примерно таким образом как ты хочешь.
Если сейчас MSVC его не выполняет, это не значит что у них не будет времени что бы заняться оптимизациями в будущем.
Разное расположение в памяти это, возможно, даже не оптимизация, а просто оптимизатор GCC включает другой алгоритм раскраски виртуальных регистров вот и все(обход дерева с другого конца края итд), поэтому переменные местами меняются. MSVC же складывает их в том порядке в котором были написаны.
Что, еще раз, не дает тебе права закладываться на их взаимное расположение вообще от слова совсем. И GCC очевидно считает также(впрочем выкидывание условия все-равно тупняк, но GCC таким хорошо известен). Что еще раз, никак не опровергает тезис о том что указатель это число.
Может просто выучить язык? Уже достаточно софта который не умеет собираться в -O2
Нет, это тебе, мне кажется, надо выучить язык, чтобы ты не закладывался на расположение статических переменных в памяти относительно друг друга. И как я уже сказал, это вообще не имеет отношения к теме о том что указатель это всего лишь номер ячейки в памяти.
Возможно ты не понимаешь, но примеры могут быть гораздо сложнее, где ты из за незнания языка даже ничего плохого и не увидишь, а потом взрыв, это просто самый простой и короткий пример.
Я все еще жду хотя бы одного примера, опровергающего тезис «указатель - это всего лишь число».