- 1
- 2
- 3
- 4
- 5
unsigned long f( unsigned long a ) {
while( (1 << 24) < a )
a -= (1 << 24);
return a;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+17
unsigned long f( unsigned long a ) {
while( (1 << 24) < a )
a -= (1 << 24);
return a;
}
Найден в дебрях старого проекта. Цель непонятна. Предположение -- обнулить старших 8-мь бит в 32-х битовом числе.
xaionaro 13.08.2009 10:32 # 0
guest 13.08.2009 12:51 # −2
size_t - будет, а long - ни разу.
xaionaro 13.08.2009 13:14 # 0
Проводим эксперимент:
А 8 * 8 == 64, что значит переменная 64-битная. Вы никогда не задавались вопросом, чем отличается long long от простого long?
guest 13.08.2009 13:49 # 0
чем отличается long long от long на x32- знаю, на x64 - теперь не знаю :)
до этого был убежден, что только размер типа указателя стал несовместим с int на x64.
xaionaro 13.08.2009 14:23 # −1
megaprogrammer001 13.08.2009 15:33 # 0
guest 13.08.2009 14:00 # +1
http://software.intel.com/en-us/articles/size-of-long-integer-type-on-different-architecture-and-os/
xaionaro 13.08.2009 14:20 # 0
Но признаюсь, был не вкурсе что они ведут себя по-своему :(, ибо их ПО вообще не использую.
guest 13.08.2009 17:12 # 0
int имеет размер, зависящий от платформы (в соответствии со стандартом ISO C):
An object declared as type signed char occupies the same amount of storage as a ‘‘plain’’ char object. A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).
xaionaro 13.08.2009 17:21 # 0
Хотя формально я высказался неверно, конечно, спасибо за поправку.
xaionaro 13.08.2009 13:20 # 0
Да, и вы никогда не задавались вопросом, чем отличается long от int? :)
xaionaro 13.08.2009 13:22 # 0
eao197 13.08.2009 17:29 # +1
xaionaro 13.08.2009 17:30 # 0
eao197 13.08.2009 17:41 # 0
Для чисел, кратных 0x1000000 этот код будет уменьшать их до 0x1000000. Так что благодоря вашему замечанию я увидел эту особенность :)
xaionaro 13.08.2009 17:44 # 0
inkanus-gray 04.06.2016 00:25 # 0