什么是避免整数溢出在C中将unsigned int转换为int的有效方法?
发布时间:2020-12-16 09:33:05 所属栏目:百科 来源:网络整理
导读:以下是在C中将unsigned int转换为int的有效且无问题的方法: #include limits.hvoid safeConvert(unsigned int passed) { int variable = static_castint(passed % (INT_MAX+1)); ...} 或者,还有更好的方法? UPDATE 正如James McNellis所指出的那样,未指定
以下是在C中将unsigned int转换为int的有效且无问题的方法:
#include <limits.h> void safeConvert(unsigned int passed) { int variable = static_cast<int>(passed % (INT_MAX+1)); ... } 或者,还有更好的方法? UPDATE 正如James McNellis所指出的那样,未指定无符号整数> INT_MAX为整数 – 而不是实现定义.因此,此处的上下文现在特别针对我的偏好,即当unsigned int超过INT_MAX时,确保此整数重置为零. 原始背景 我有一些unsigned int用作计数器,但是想要在特定情况下将它们作为整数传递. 在正常操作下,这些计数将保持在INT_MAX的范围内.但是为避免遇到未定义的实现特定行为,如果发生异常(但有效)的情况,我想在这里进行一些有效的转换. 解决方法
这应该也有效:
int variable = passed & INT_MAX; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |