c - 移位计数大于类型宽度
问题描述
我有一个函数,它接受int data_length
并执行以下操作:
unsigned char *message = (unsigned char*)malloc(65535 * sizeof(char));
message[2] = (unsigned char)((data_length >> 56) & 255);
我得到以下信息:
warning: right shift count >= width of type [-Wshift-count-overflow]
message[2] = (unsigned char)((data_length >> 56) & 255);
该程序按预期工作,但如何删除编译器警告(不禁用它)?类似的问题似乎没有使用变量作为要插入的数据,因此似乎解决方案是将它们强制转换为 int 等。
解决方案
推荐阅读
- java - 在 protobuf 中,我可以将地图的键限制为某些值吗?
- javascript - 如何验证来自 Google 发布/订阅推送的 JWT 令牌(未找到信封的 pem)
- c# - 如何将列名数组传递给 linq 查询
- javascript - History.push 适用于 BrowserRouter 但不适用于路由器
- r - 使用 actionButton Shiny R 删除 outputTable
- sql-server - 如何在 SQL Server Reporting Service 2017 中启用 REST API?
- oracle - “ON CONVERSION ERROR”因“ORA-43918:此参数必须是文字”而失败
- jquery - 带有 jQuery/数据表的 Django
- c++ - GetDIBits() 将目标指针设置为 NULL 且没有错误
- sql-server - 我可以在 SQL 中执行除非查询吗?使用 row_num 查询