Здравствуйте, Alexander G, Вы писали:
N>>http://files.rsdn.org/38394/sizeof_int64_v2.jpg
AG>Есть подозрение, что не всё так плохо, парсер watch выражений — это что-то отдельное от компилятора, и при sizeof в коде проблема не повторится.
Так а в чем здесь проблема, может объяснить кто-нибудь?
R>Так а в чем здесь проблема, может объяснить кто-нибудь?
Я исхожу из предположения, что bits имеет тип unisgned _int64 .
Из скриншота это не следует, но предполагаю, что это подразумевается автором и соответствует действительности, иначе проблемы действительно нет
Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, rg45, Вы писали:
R>>Так а в чем здесь проблема, может объяснить кто-нибудь?
AG>Я исхожу из предположения, что bits имеет тип unisgned _int64 . AG>Из скриншота это не следует, но предполагаю, что это подразумевается автором и соответствует действительности, иначе проблемы действительно нет
CaptainFlint и Pzz уже ответили выше: в колонке Type показан тип, который имеет выражение sizeof(), а не тип в в скобочках этого сайз-офа. Соответственно
* bits имеет тип __int32 или unsigned __int32
* sizeof(bits) имеет тип unsigned __int64, ибо это size_t для билда 64 бит
Именно поэтому в колонках Value и Type мы имеем 4 и unsigned __int64
Далее:
* unsigned __int64 имеет тип... unsigned __int64! Капитан сегодня явно в ударе!
* sizeof(unsigned __int64) имеет тип unsigned __int64, ибо это size_t для билда 64 бит
В итоге, имеем для второй строки 8 и unsigned __int64 — ноу проблема.