ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
956446 Топик полностью
SciFi (01.11.2019 09:23 - 12.11.2019 11:44, просмотров: 335) ответил Mahagam на из статьи )) там ещё есть такая же страшная картинка. она не менее страшная чем первая. так что ваши 500MHz на ядро - тьфу ))
Современные компиляторы шибко умные, могут посчитать на этапе компиляции, если есть возможность. Интересно, осилит посчитать isOdd(1)? Даже интересно стало, надо попробовать. А вдруг задымится и бабахнет? UPD: GCC мегакрут: bool isOdd(int n) { if (n == 2147483647) { return true; } else if (n == 0) { return false; } else { return isOdd(n += 2); } } void test(void) { static int volatile i; i = isOdd(2); }
test.c: In function 'test':
test.c:42:25: warning: variable 'i' set but not used [-Wunused-but-set-variable]
     static int volatile i;
                         ^
test.c: In function 'test':
test.c:34:16: warning: iteration 1073741822 invokes undefined behavior [-Waggressive-loop-optimizations]
         return isOdd(n += 2);
                ^
test.c:28:13: note: within this loop
     else if (n == 0)
Вот это вот 'undefined behavior' заменяет на 'while (1);'. Ну и isOdd(1) таки считает на этапе компиляции.
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้