2013-03-10 2 views
1

В чем разница между подписанным и нормальным коротким значением в C++? Является ли диапазон другим?В чем разница между подписанным и нормальным коротким

+0

Исправьте меня, если я ошибаюсь, но «нормальный» не является ключевым словом C++. – 2013-03-10 12:48:35

+2

«нормальный короткий» он имеет значение «короткий», без какого-либо «(un) подписанного» спецификатора. – cubuspl42

ответ

2

short - signed по умолчанию, поэтому нет разницы.

3

Имена signed short int, signed short, short intshort и являются synonymes и означают одинаковый тип в C++.

+1

Обратите внимание, что целые типы 'signed char' и' char' являются _not_ одинаковыми. «Char» либо то же самое, что «unsigned char», либо как «подписанный символ», вы не знаете, какой из них (ОК, ОК, я соврал, это зависит от вашей архитектуры). – vonbrand

+0

@vonbrand Да и с 'wchar_t' или' float' можно даже не квалифицировать его с помощью 'signed', но это может зайти слишком далеко от вопроса OP. –

0

В C++ по умолчанию подписаны целые числа, которые ИМО приносит существование ключевого слова signed. Технически, это избыточно, возможно, это помогает с некоторой ясностью, но вряд ли кто-либо использует его в производстве. По умолчанию все знакомые целые числа подписаны. Я честно не могу вспомнить последний раз, когда я видел signed в производственном коде.

Что касается плавающих и парных - они не могут быть неподписанными вообще, они всегда подписываются.

В связи с этим синтаксис C++ немного избыточен, по крайней мере, IMO. Существует несколько разных способов сказать одно и то же, например. signed short int, signed short, short int и short, и все, что вы говорите, может быть связано с платформой или даже с компилятором.

каркасы, такие как Qt, например объявить свои собственные соглашения, которые короче и информативными, как, например:

quint8, quint16, quint32, quint64 все целые числа без знака, с числом, означающий размер в битах, в такая же логика:

qint8, qint16, qint32, qint64 являются целыми целыми числами с соответствующей шириной бита.

uint, по крайней мере для меня, гораздо предпочтительнее, либо unsigned или unsigned int, в той же логике, вы также ushort, который предпочтительно unsigned short int. Существует также uchar, чтобы завершить короткоживущую семью.

+1

Дополнительные ресурсы: http://en.cppreference.com/w/cpp/types/integer – Zeta

+0

'signed' иногда используется для бит-упакованных членов structs и для' char', поэтому ключевое слово будет оставаться полезным навсегда на языке. –

Смежные вопросы