Подтвердить что ты не робот

Опускание типа данных (например, "без знака" вместо "unsigned int" )

Я знаю, что если объявление типа данных опускается в коде C/С++ таким образом: unsigned test=5;, компилятор автоматически превращает эту переменную в int (беззнаковый int в этом случае). Я слышал, что это стандарт C, и он будет работать во всех компиляторах.
Но Я также слышал, что это считается плохой практикой.
Как вы думаете? Должен ли я действительно вводить unsigned int вместо unsigned?

EDIT: Спасибо за ваши быстрые ответы. Итак... short, long и long long также являются типами данных?

4b9b3361

Ответ 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 столбцах...)