За исключением
bool
и расширенных типов символов, интегральные типы могут быть знаковыми или беззнаковыми (34 стр. C ++ Primer 5ed)
«может быть» сбивает меня с толку, однако, пожалуйста, не давайте такой ответ, Я не спрашиваю разницу между, например, int
и unsigned int
, когда вы явно записываете их в декларации. Я хотел бы знать для типа char, short, int, long, long long
, в каком состоянии он подпален или беззнаковый
Я написал простой тестовый код на своем Mac и скомпилировал компилятором GNU, он говорит, что char
подпалин
#include <iostream>
#include <limits>
using namespace std;
int main( int argc, char * argv[] )
{
int minChar = numeric_limits<char>::min();
int maxChar = numeric_limits<char>::max();
cout << minChar << endl; // prints -128
cout << maxChar << endl; // prints 127
return 0;
}
Тот же механизм был применен ко всем знаковым целочисленным типам, и результаты показаны ниже.
minOfChar: -128
maxOfChar: 127
minOfShort: -32768
maxOfShort: 32767
minOfInt: -2147483648
maxOfInt: 2147483647
minOfLong: 0 // This is interesting, 0
maxOfLong: -1 // and -1 :p
minOfLongLong: 0 // shouldn't use int to hold max/min of long/long long #Bathsheba answered below
maxOfLongLong: -1 // I'll live this error unfixed, that's a stupid pitiful for newbies like me, also good for leaning :)
Результат говорит мне, что для char, short, int, long, long long
, который скомпилирован g ++ на Mac, по умолчанию используются целые числа.
Итак, вопрос в названии:
Что определяет интегральный тип - подпаленный или беззнаковый
char
не имеет подписи в некоторых системах, потому что это может работать лучше всего на базовом оборудовании. Возвращается к портам C 1970-х годов. - person Bo Persson   schedule 26.01.2018int
иunsigned int
и т. Д.int
всегда подписан - person M.M   schedule 26.01.2018