能否使用0对typedef定义的word类型变量进行初始化?
用0初始化typedef定义的word类型变量的合规性判断
这个写法是否符合C语言规范,完全取决于你项目中word类型的前置定义:
- 如果代码已经提前通过头文件(比如Windows开发常用的
<windows.h>、嵌入式项目自定义的类型头文件)将word定义为整数类型别名(最常见的定义是typedef unsigned short word;),那么你这段写法完全合规。
C语言标准允许用整型常量表达式对兼容的整数类型变量做初始化,0是通用的合法整型常量,对所有有符号、无符号整数类型都适配,不会出现类型不匹配的问题。 - 如果没有提前定义
word类型,这段代码连编译都通不过,不可能正常运行。你提到代码可以正常运行,说明你项目内已经提前完成了word的整数类型定义,这种场景下你的实现是符合规范的。
如果要进一步优化编码可读性,且确认word是无符号整数类型的话,也可以用0U做初始化,明确标识常量的无符号属性,不过这属于编码风格选择,不影响合规性。
内容的提问来源于stack exchange,提问作者Harshini Gnanasekar
相关产品推荐
相关产品推荐

