NULL в шестнадцатеричном виде

428 просмотра
0
0 Комментариев

Подскажите пожалуйста, как можно представить переменную типа int(к примеру c++) со значением NULL(Undefined) в шестнадцатеричном виде?


Добавить комментарий

2 Answers

Python Опубликовано 12.12.2018
0

Что косается явы то есть по поводу null очень хороший ответ

null

а в остальном согласен с DreamChild

Добавить комментарий
0

@Semen Savenko, как говорил О. Бендер: «Киса, мы же художники!».

Так что берите кисти и краски (точнее в Вашем случае клавиатуру и систему) и пишите. Редактор, компилятор и несколько простых системных команд (grep, find и т.п.) помогут Вам самостоятельно ответить на кучу вопросов.

Смотрите, для Си и крестов

avp@avp-ubu1:~/hashcode$ cat nullx.c
#include <stdio.h>         /* здесь,
                              точнее во включаемом
                              /usr/include/linux/stddef.h:
                              вот так
                              #if defined(__cplusplus)
                              #define NULL 0
                              #else
                              #define NULL ((void *)0)
                              #endif
                              объявляется NULL */
int
main (int ac, char *av[])
{
  long lnull = (long)NULL; /* это правильно, т.к.
                              sizeof(pointer type) == sizeof(long)
                              (по крайней мере в Linux) */
  int  inull =
#ifdef __cplusplus
    (int)NULL;             /* в 64-bit архитектуре в результат попадут
                              только младшие 32 разряда
                              (и в Си и в крестах) */
#else
  (int)(long)NULL;         /* а вот это специально для gcc,
                              иначе он поругивается на different size warning,
                              хотя g++ принимает (int)NULL без замечаний */
#endif
  printf ("NULL: 0x%lx  (int)NULL: 0x%x\n",
          lnull,  /*  можно и просто (long)NULL */
          inull   /*  можно и просто (int)NULL
                      ((int)(long)NULL для gcc)*/);
  return fflush(stdout) == EOF;
}
avp@avp-ubu1:~/hashcode$
avp@avp-ubu1:~/hashcode$ gcc nullx.c
avp@avp-ubu1:~/hashcode$ g++ nullx.c
avp@avp-ubu1:~/hashcode$ ./a.out
NULL: 0x0  (int)NULL: 0x0
avp@avp-ubu1:~/hashcode$

По поводу Java и C# (под рукой ни того, ни другого нет), но несложно догадаться, что в большинстве реализаций NULL будет представлен (а пока мы не начнем работать с тегированной памятью так и останется) все тем же нулем. Хотя присвоить его переменной типа int (убедить в этих языках компилятор сделать это) может оказаться непросто.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up