打印C语言枚举(enum)类型值时出现类型转换及常量错误求助
枚举打印错误的解决方法
错误原因分析
- printf格式字符串使用错误:你用单引号
'%c\n'包裹格式字符串,C语言中printf的第一个参数必须是双引号包裹的字符串常量,单引号包裹的'%c\n'属于多字符常量,类型为int,传递给需要const char*类型的参数时,就会触发“整数到指针转换不兼容”的报错,同时编译器会提示“无法打印多字符常量”。 - 格式符匹配错误:如果要打印枚举对应的整数值,
%c是用来输出字符的格式符,和枚举的int类型不匹配,应该使用%d格式符。
修正后的代码
#include <stdio.h> int main() { enum Company { GOOGLE, FACEBOOK, XEROX, YAHOO, EBAY, MICROSOFT}; enum Company a = XEROX; enum Company b = GOOGLE; enum Company c = EBAY; printf("%d\n",a); printf("%d\n",b); printf("%d\n",c); return 0; }
运行结果
修正后运行会输出枚举对应的整数:
2 0 4
(枚举成员默认从0开始依次递增赋值,GOOGLE是0,XEROX是2,EBAY是4)
内容的提问来源于stack exchange,提问作者Jeevanpranav K S
相关产品推荐
相关产品推荐

