Re[2]: каждый раз, когда вы пишете i++ + ++i...
От: smeeld  
Дата: 18.06.14 21:24
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, Кодт, Вы писали:


К>> где здесь чёрный ящик.

W>
  тут
i*1000000000 — переполнение int — UB.

W>Так, например, в эксперименте с gcc и с INT_MAX == 231-1, компилятор вполне разумно считает, что без переполнения i не может быть больше 2. А раз 2 < 10, то и выход по условию (i < 10) невозможен, так что его и проверять не стоит. Впрочем другие компиляторы по другому чудят.


Что то у меня честно проверял i<10 на каждой итерации.


0 : 0 : 27
1 : 1000000000 : 82
2 : 2000000000 : 41
3 : -1294967296 : 124
4 : -294967296 : 62
5 : 705032704 : 31
6 : 1705032704 : 94
7 : -1589934592 : 47
8 : -589934592 : 142
9 : 410065408 : 71

sizeof(int)==4, arch==x86_64, gcc -4.4.7
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.