加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

UL后缀vs uint32_t cast

发布时间:2020-12-14 04:25:02 所属栏目:Windows 来源:网络整理
导读:我必须定义这样的常量: #define MY_CONSTANT 0xBEEF 我想确定我的常量将被视为32位. 我可以使用这样的(uint32_t)演员: #define MY_CONSTANT (uint32_t)0xBEEF 或者像这样的UL后缀: #define MY_CONSTANT 0xBEEFUL 这两个版本完全相同吗? 我会说不,因为UL
我必须定义这样的常量:
#define MY_CONSTANT   0xBEEF

我想确定我的常量将被视为32位.

我可以使用这样的(uint32_t)演员:

#define MY_CONSTANT   (uint32_t)0xBEEF

或者像这样的UL后缀:

#define MY_CONSTANT   0xBEEFUL

这两个版本完全相同吗?

我会说不,因为UL相当于unsigned long和unsigned long length可能取决于CPU.

C99标准确保uint32_t整数是32位,但我不认为它确保UL后缀做同样的事情.

你是对的,因为你提到的原因,它们并不相同.不能保证uint32_t是unsigned long的别名.如有必要,在#defines中包含强制转换.

您应该使用括号,请参阅@Keith Thompson的评论,原因很简单;否则sizeof将无法正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读