- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
int iseven(long long int number)
{
struct Num {
unsigned int x:1;
unsigned int y:31;
unsigned int z:32;
} num = (*(struct Num*)(&number));
return num.x; //Если результат 1, то нечётное.
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
int iseven(long long int number)
{
struct Num {
unsigned int x:1;
unsigned int y:31;
unsigned int z:32;
} num = (*(struct Num*)(&number));
return num.x; //Если результат 1, то нечётное.
}
Функция определения чётности числа посредством возврата младшего бита.
guest6 15.10.2024 16:23 # 0
И вообще что стандарт говорит о порядке битовых полей?
TurboLyudoed 14.11.2024 16:02 # 0
Да.
>И вообще что стандарт говорит о порядке битовых полей?
Зависит от компилятора и свойств системы. В конкретно этом случае по умолчанию используется порядок от младшего к старшему.
Так что этот код попросту непереносим.
guest6 14.11.2024 16:07 # 0
Это какой-то хак уровня borland c под дос
Кстати, четность числа можно проверить энднув его с единицей. Если последний бит единица, то число нечетное, не? А еще есть % 2
guest6 14.11.2024 17:00 # 0
Самое смешное, что у древнего PDP-11 умножение и деление есть.
guest6 14.11.2024 19:48 # 0
Как сказал бы j2376234: всегда же можно намакроёбить. Ну правда, умножение можно заменить сложением и проверкой
guest6 15.11.2024 03:33 # 0