max / min dla typów int i char (z zastosowaniem np. std::numeric_limits)
Ostatnio zmodyfikowano 2013-05-29 14:42
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. |
|
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
|
|
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.
|
|
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. |
|
« 1 » |