整数向下转型在运行时遇到错误
2024-07-28
56
void funcfoo(uint8_t len); ......size_t l = strlen(str); funcfoo((uint8_t)l);
funcfoo 必须采用 uint8_t。 此代码编译并运行良好,但会发生什么情况:对于 uint8_t,strlen is > max val ? 它会出现问题。
是否有一种标准方法可以进行向下转型,如果失败,则会在运行时出错。 或者编译器扩展,甚至是一种众所周知的方法。
我知道我可以推出自己的宏来做到这一点。
解决方法:
您可以定义一个宏来打印某些内容。 (只有带符号的无符号数才会调用未定义或实现定义的行为)
#define CASTTO(to, val) (((to)(val) != (val)) ? (printf("!"), (to)(val)) : ((to)(val)))int main(void){ unsigned x; srand(time(NULL)); for(int i = 0; i < 20; i++) { x = rand() &0xfff; printf("%"PRIx8" (x = %x)\n", CASTTO(uint8_t, x), x); } }更新于:3个月前
赞一波!1
相关文章
- 【说站】python整数的进制转换
- 【说站】java产生随机整数指定范围
- 【说站】java中HttpClient的错误处理
- PHP程序员经常碰到的11个MySQL错误
- uniapp 微信小程序 控制台警告和错误处理
- EasyWeChat 生成小程序码报错 cURL错误 60
- 微擎后台登陆:输入密码错误次数超过5次,请在1小时后再登录
- apache常见错误:VC运行库(找不到 VCRUNTIME140.dll)
- c++运行时报错误:there is a mismatch in alloc and dealloc
- 使用Python的错误计算器
- Python 错误类型
- 修复 Ubuntu 上“E: 无法找到软件包”错误的 5 种方法
- git RPC failed; curl 18 transfer closed with outstanding read data remaining 是什么错误?
- qt creator编译时出现了错误:error: LNK1181: cannot open input file 'debug\main.obj'
- vscode通过Remote-SSH插件连接Linux时报Error: XHR failed错误
- 独立页管理生成静态后的图片路径错误问题
- 单篇文章独立页面管理生成静态后的图片路径错误问题
文章评论
评论问答