- 1
- 2
- 3
- 4
- 5
//...
float a = 7;
printf("%d", *(unsigned int *)(&a) >> 23);
// Что напечатает?
//...
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
//...
float a = 7;
printf("%d", *(unsigned int *)(&a) >> 23);
// Что напечатает?
//...
На экзамене как-то задали такой вопрос. А ну-ка, кто без компилятора ответит?
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
слушай, попробуй в tbarr.h исправить и на гцц пересобрать, может баги исчезнут?
Я двум людям 10 раз сказал, что глюки на ГЦЦ и Интеле, которых нет в Студии - это 95% что из-за тарасомассива, который переосмысливающе преобразует uint8_t* в T*. Они ничего не ответили. Я вот сегодня погуглил - интересно, если я поменяю uint8_t на тупо char, то мне полегчает? Типа там сказали, что для указателей, полученных из char*, компилятор не имеет права считать их заведомо разными.
Если я правильно понимаю правила алиасинга - компилятору вообще похуй, каким образом получен указатель.
Есть у тебя в коде два обращения к данным через два разных указателя (например *p = 42; и int x = *q). Компилятор имеет полное право поменять эти два обращения местами, за исключением описанных в стандарте случаев. А случаи эти - если один из указателей char* или если эти типы целые одного размера (т.е., к примеру, int и unsigned int). (Там вроде еще случаи есть, но я их не помню, прочти список в стандарте).
А кастовать - да хоть закастуйся, влияют только сами обращения через указатель.
Вечерком почитаю, если не заиграюсь в AC4.
А куда высылать-то? Ты на крестофоруме в личку напиши хоть.
[email protected]
Но меня там нет :(
Ну как же можно не пройти тест на гейдевелопера? 6 вопросов всего.
Что это?
Пощади, Бормандт, я больше не буду троллить...
Asassin Assasin Assassin Creed.
Ещё несколько раз static_cast от родителя к потомку.
Блин, если б у меня был компилятор, который воспроизводит баг, и с которым я умею работать, я б поковырял. А так народ видит, что у меня баг, а копать, конечно же, мой код не хочет, ибо не своё.
Ну если это единичный объект, и ты обеспечил гарантию, что там находится этот потомок - все норм.
А вот кастовать массив из Base* в массив из Derived* (да и наоборот тоже) категорически запрещено:
нет, такого нет
есть
И ещё есть
Да, и все [i] - это индексы в тарасомассиве
Интуитивно предчувствовал это!
Я не отвечу, не помню я сколько бит там что значат и с какого числа они нумеруются.
Я даже не знаю, что означает нулевая экспонента - 1, 0.5, или 2, там кажись сдвиг есть.