Понимание постоянных переполнений в Go
язык программирования GO предлагает комплексную систему типа, включая концепцию константов. Однако, работая с константами, важно знать о потенциальном переполнении. Один из таких случаев включает в себя использование нетипированной константа для выполнения битовых операций на типичной переменной.
Описание. did: = (userId & ^(0xffff
, когда попытка скомпилировать этот код, вы можете встретить сообщение об ошибке:]
./ xxxx.go: 511: constant -18446462598732840961 Overflows intuserid := 12345
did := (userid & ^(0xFFFF объяснение
./xxxx.go:511: constant -18446462598732840961 overflows int
solution
] Чтобы решить эту проблему, вы можете использовать альтернативную константу, которая вписывается в тип int. Например, вы можете заменить проблемное выражение на 1
дополнительный совет , если вы нацелитесь на портируемость, это необходимо использовать int int int int int. Это гарантирует, что упомянутый код будет работать правильно даже в системах, где int составляет 32-битный.
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3