Опускание типа данных (например, "без знака" вместо "unsigned int" )
Я знаю, что если объявление типа данных опускается в коде C/С++ таким образом: unsigned test=5;
, компилятор автоматически превращает эту переменную в int (беззнаковый int в этом случае). Я слышал, что это стандарт C, и он будет работать во всех компиляторах.
Но Я также слышал, что это считается плохой практикой.
Как вы думаете? Должен ли я действительно вводить unsigned int
вместо unsigned
?
EDIT: Спасибо за ваши быстрые ответы. Итак... short
, long
и long long
также являются типами данных?
Ответы
Ответ 1
unsigned
- тип данных! И это происходит с псевдонимом unsigned int
.
Когда вы пишете unsigned x;
, вы не опускаете никаких типов данных.
Это полностью отличается от "default int
", который существует в C (но не в С++!), где вы действительно опускаете тип объявления, а C автоматически передает этот тип как int
.
Что касается стиля, я лично предпочитаю быть явным и, таким образом, писать unsigned int
. С другой стороны, Im в настоящее время участвует в библиотеке, где ее соглашение просто пишет unsigned
, поэтому я делаю это вместо этого.
Ответ 2
Как пишет @Konrad Rudolph, unsigned
- это тип данных. Это действительно просто псевдоним для unsigned int
.
Что касается вопроса использования unsigned
плохой практики? Я бы сказал, нет, нет ничего плохого в использовании unsigned
в качестве спецификатора типа данных. Профессионалы не будут брошены этим, и любой стандарт кодирования, в котором говорится, что вы должны использовать unsigned int
, на мой взгляд, бесполезен драконов.
Ответ 3
Я бы даже сделал это на один шаг и использовал stdint uint32_t type.
Это может быть вопросом вкуса, но я предпочитаю знать, какой примитив я использую в некоторых древних соображениях оптимизации на платформу.
Ответ 4
Бесполезная многословие считается вредной. Я бы никогда не писал unsigned int
или long int
или signed
ничего (кроме char
или битовых полей), потому что он увеличивает беспорядок и уменьшает количество значимого кода, который вы можете поместить в 80 столбцов. (Или, скорее, побуждает людей писать код, который не подходит в 80 столбцах...)