Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

max / min dla typów int i char (z zastosowaniem np. std::numeric_limits)

Ostatnio zmodyfikowano 2013-05-29 14:42
Autor Wiadomość
Maciek
Temat założony przez niniejszego użytkownika
max / min dla typów int i char (z zastosowaniem np. std::numeric_limits)
» 2013-05-29 12:35:25
Witam. Mam takie pytanie - czy standard gwarantuje, że typ int będzie (zawsze) większy od typu char? czy by może zdarzyć się sytuacja że na jakiejś implementacji typ std::numeric_limits może zwrócić takie samo min/max dla tych przykładowych dwóch typów ? Dzięki za wskazówki.
P-84253
cyklopek11
» 2013-05-29 14:01:17
Dokument (standard C++) ISO/IEC 14882 C++11 na stronie 464 określa:

"1.) Table 31 describes the header <climits> ...
2.)The contents are the same as the Standard C library header <limits.h>"

Z kolei dokument (standard C) ISO/IEC 9899:201x na stronie 26 określa zakresy min i max :
"5.2.4.2.1 Sizes of integer types <limits.h>

Czyli po przetworzeniu tych informacji odpowiedź na Twoje pytanie jest taka, że w świetle standardu C jest zagwarantowane że:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) < sizeof(long long)

co teoretycznie przy dwóch pierwszych znakach równości, określałoby równy (w bitach) rozmiar char-a i int-a


 


 
P-84254
Monika90
» 2013-05-29 14:01:54
Tak, sizeof(int) może być równe sizeof(char), (które jest równe 1 z definicji). W takiej sytuacji, kiedy char jest typem ze znakiem to CHAR_MIN i CHAR_MAX bedą równe odpowiednio INT_MIN i INT_MAX, a jak char jest bez znaku, to CHAR_MAX będzie nawet większe od INT_MAX.
P-84255
pekfos
» 2013-05-29 14:42:49
czy standard gwarantuje, że typ int będzie (zawsze) większy od typu char?
Nie gwarantuje, ale w cstdint są typy całkowitoliczbowe, dla których standard dokładnie określa rozmiary, ale nie gwarantuje, że te typy będą zdefiniowane.
P-84260
« 1 »
  Strona 1 z 1