Когда мы выполняем любую операцию с неподписанным коротким int, он получает повышение без знака int даже на машине, в которой оба типа данных имеют одинаковый размер. Какова цель такого продвижения? Как это помогает? Разве это не просто изменение имени (поскольку оба имеют одинаковый размер)?Почему unsigned short int повышается до unsigned int, даже когда размеры одинаковы?
ответ
Первоначальный мандат комитета ANSI C заключался в кодификации существующей практики, а не в создании нового языка.
И стандарт C во всех своих итерациях через ANSI и ISO очень серьезно относится к обратной совместимости.
Другими словами, это делается именно так, потому что это всегда было сделано таким образом :-)
Причина продвижение делается потому, что стандарт для всех реализаций, в том числе тех, где размеры различны ,
Но я не уверен, о чем вы жалуетесь. Продвижение, когда типы имеют одинаковый размер, вряд ли может повлиять на производительность.
Грубо говоря, потому что именно так Деннис Ритчи решил, что он должен вернуться в начале 1970-х годов, когда он впервые изложил правила для C (или, по крайней мере, сначала изложил правила для C с поддержкой целых типов unsigned
, но это было уже потому, что short
было повышено до int
).
- 1. Какая разница между unsigned short int и unsigned int или unsigned short?
- 2. разница между unsigned short int и unsigned short
- 3. Даже четность unsigned int
- 4. Вывод короткого int и unsigned short?
- 5. добавление unsigned int в unsigned int *
- 6. Преобразование unsigned char в int и short
- 7. Возвращения unsigned long, когда ожидается unsigned int
- 8. Сужение преобразования без знака int в short unsigned int
- 9. Преобразование QString в unsigned short int
- 10. Является ли тип unsigned short + int реализационным?
- 11. Ошибка: присвоение '_List_iterator <unsigned int, unsigned int &, unsigned int *>' from 'int'
- 12. short int to unsigned int by byte order by C++
- 13. Почему unsigned int 0xFFFFFFFF равно int -1?
- 14. Unsigned Short to Unsigned Длительное назначение
- 15. Нет совпадений для вызова в '(std :: pair <unsigned int, unsigned int>) (unsigned int &, unsigned int)'
- 16. Как преобразовать const unsigned short в unsigned short?
- 17. unsigned long long int
- 18. volatile unsigned int * const
- 19. C В чем разница между unsigned int (a)^unsigned int (b) и unsigned int (a^b)?
- 20. Typecast unsigned int to unsigned long int C++
- 21. Reflow INT UNSIGNED Series
- 22. Переполнение Unsigned Int
- 23. Сопоставление строки с картой unsigned int в unsigned int
- 24. Unsigned int array allocation
- 25. сравнение между unsigned int и unsigned char
- 26. Unsigned Int в Java
- 27. encoding unsigned int
- 28. Unsigned int conversion C++
- 29. QLCDNumber и unsigned int
- 30. unsigned _stdcall .... неявно int?
Типы по-прежнему отличаются от перспектив системы типа C, даже если они потребляют столько же битов в памяти на вашей конкретной платформе. – reuben
@Reuben, можете ли вы привести пример о том, как это помогает в любом случае. Нужно ли беспокоиться о таком преобразовании? Будет ли это потенциальной ошибкой? – bubble
Существуют существующие платформы/машины/операционные системы, на которых 'sizeof (unsigned short int)! = Sizeof (unsigned int)' – reuben