首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C将int分配给无符号长?

如何使用C将int分配给无符号长?
EN

Stack Overflow用户
提问于 2016-10-27 21:25:58
回答 1查看 4.9K关注 0票数 1

我正在使用C语言。有一个函数名为"npu_session_total“。然后,我将使用这个函数的返回值,并将其赋值给一个无符号的长变量"accelerated_count“。

代码语言:javascript
复制
int npu_session_total(void)
{
    // this will return an int
    return atomic_read(&npu_session_count);
}
........
unsigned long accelerated_count = npu_session_total();

这会否引起问题呢?我该怎么做演员?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-10-27 21:33:14

int分配给unsigned long可以像OP那样简单地完成。它在C中有很好的定义。当some_int_value >= 0时,它将始终不改变地适合于unsigned long

代码语言:javascript
复制
INT_MAX <= UINT_MAX <= ULONG_MAX

不需要演员,掩蔽,也不需要数学--就像OP一样。

代码语言:javascript
复制
unsigned long some_unsigned_long_object = some_int_value;

诀窍是当some_int_value < 0。保存的值将是some_int_value + ULONG_MAX + 1@AnT现在可以用于OP的代码了吗?也许不是。

一个更安全的转换将首先测试负面性。

代码语言:javascript
复制
int session_total = npu_session_total();
if (session_total < 0) {
  Handle_Negative_Case(session_total);
}
else {
  unsigned long accelerated_count = npu_session_total();
  ...
}

@OP评论说,int值永远不应该是负值。防御性编码仍然会检测到负值并对其进行处理。也许是一个简单的错误信息和退出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40294434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档