The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"OpenNews: Релиз GCC 4.2"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"OpenNews: Релиз GCC 4.2"  
Сообщение от opennews on 16-Май-07, 19:17 
Вышел (http://gcc.gnu.org/) релиз новой ветки набора компиляторов GCC 4.2 (http://gcc.gnu.org/gcc-4.2/).


Особенности новой версии (http://gcc.gnu.org/gcc-4.2/changes.html):
-  Удалена опция -fshared-data;
-  В компиляторы C, C++ и Fortran добавлена поддержка техники параллельного программирования OpenMP (http://gcc.gnu.org/projects/gomp/).
-  Новые опции -fstrict-overflow и -Wstrict-overflow для управления поведением при переполнении переменной;
-  Новая опция -fno-toplevel-reorder отключающая перегруппировку порядка следования top-level функций, переменных и asm вставок.
-  В преддверии появления в GCC 4.3 поддержки описанного в стандарте C99 метода обработки inline функций, GCC 4.2 выдает предупреждение при использовании нестатичных inline  функций.
- Другие привязанные к определенным архитектурам или языкам изменения (http://gcc.gnu.org/gcc-4.2/changes.html).


URL: GCC 4.2
Новость: http://www.opennet.ru/opennews/art.shtml?num=10782

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Релиз GCC 4.2"  
Сообщение от celz on 16-Май-07, 19:17 
Ну наконец то в релизе нативно OpenMP, с ноября ждал!
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Релиз GCC 4.2"  
Сообщение от Аноним on 17-Май-07, 00:13 
Народ!
Объясите, почему, если i = 5, то
++i + ++i
даёт 14??
Ведь как я понимаю (пошагово)
1)++i даёт 6
2)затем 6 складывается с ++i,
а т.к. ++i увеличит значение i до выполнения какой-либо другой операции, то получается, что 6 складывается с (6 + 1).
Должно тогда получаться 13??
А все говорят: 14.
Объясните С-новичку :(
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Релиз GCC 4.2"  
Сообщение от Acron on 17-Май-07, 01:05 
>>а т.к. ++i увеличит значение i до выполнения какой-либо другой операции, то получается, что 6 складывается с (6 + 1)
не 6, а i складывается с (6+1).
А 6+1 и есть i. Следовательно, в итоге имеем: 7+7=14
i первая и i вторая это одна и та же ячейка памяти.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Релиз GCC 4.2"  
Сообщение от Xan (??) on 17-Май-07, 01:38 
Что, опять эта задачка?
Причина в том, что компилятор использует оптимизацию с помощью регистров.
volatile int i = 5;
решит эту проблему и результат будет по стандарту - 13.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Релиз GCC 4.2"  
Сообщение от Anton (??) on 17-Май-07, 03:18 
Не надо людям мозги пудрить. Не разбираешься - молчи лучше... "Оптимизация с помощью регистров" ровно как и "volatile" здесь абсолютно не к месту. А к месту здесь стандарт C++, который утверждает следующее:

Chapter 5 Expressions
...
4 Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified.58) Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored. The requirements of this paragraph shall be met for each allowable ordering of the subexpressions of a full expression; otherwise the behavior is undefined. [ Example:

i = v[i ++]; / / the behavior is undefined
i = 7 , i++ , i ++; / / i becomes 9
i = ++i + 1; / / the behavior is undefined
i = i + 1; / / the value of i is incremented

—end example ]

Так что поведение в данном случае не определено, и никаких гарантий по поводу результата быть не может.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Релиз GCC 4.2"  
Сообщение от Ф on 17-Май-07, 10:55 
в с++ временное значение в выражении возвращает по ссылке, а не по значению.
а по стандарту - это не определенное поведение
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Релиз GCC 4.2"  
Сообщение от Dvorkin email(??) on 17-Май-07, 23:19 
тоже любитель анального юмора?
http://community.livejournal.com/ru_programming/750836.html
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Релиз GCC 4.2"  
Сообщение от blob (??) on 20-Май-07, 12:38 
Почему? Вы работаете с ОДНОЙ ячейкой памяти. правильный ответ == 14. Неужели Вы этого не видите :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Релиз GCC 4.2"  
Сообщение от horsh (??) on 17-Май-07, 03:01 

Вот кусок стандарта. На присваивании сиквенс поинт отсутствует, равно как
и на +, ++. В данных случаях только на точке с запятой.


6.5 Expressions

...

2  Between the previous and next sequence point an object shall have its stored value modified AT MOST ONCE by the evaluation of an expression. Furthermore, the prior value shall be read only to determine the value to be stored.71)

...

71) This paragraph renders undefined statement expressions such as

i = ++i + 1;
a[i++] = i;

while allowing

i = i + 1;
a[i] = i;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Релиз GCC 4.2"  
Сообщение от Xumorist on 19-Май-07, 00:06 
Да уж - в постах о выходе компилятора обсуждают прикол с bash.org.ru :-D
Пацтулом :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Релиз GCC 4.2"  
Сообщение от Ламер (??) on 19-Май-07, 13:13 
>Да уж - в постах о выходе компилятора обсуждают прикол с bash.org.ru
>:-D
>Пацтулом :)

Кстати, этот прикол не на одном форуме программеров сейчас обсуждается. :)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Релиз GCC 4.2"  
Сообщение от Аноним on 18-Июн-07, 18:20 
Для того, чтобы понять, надо стать компилятором.
1) Пробелы убрали
2) Слева направо делаем разбор выражения
   а) ++i это префисный инкремент                           ++i  == 6
   б) затем два плисика подряд это постфиксный инкркмент    i++  == 7
   в) затем еще плюс это, наконец, сложение                 i+i  7 + 7 == 14
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Релиз GCC 4.2"  
Сообщение от Аноним on 01-Июл-07, 17:37 
13 получится если поставить скобки :

(++i)+(++i) == 13

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру