【发布时间】:2013-08-27 16:12:23
【问题描述】:
如果我这样声明:
int i = 0 + 'A';
'A' 被认为是 char 还是 int?
有些人可能会使用:
int i = 0 + (int)'A';
但这真的有必要吗?
【问题讨论】:
-
不需要后者。字符文字的类型为
int。 -
即使
'A'的类型是char,除了最奇特的平台外,演员表对所有平台都没有影响。准确地说,如果'A'是有符号字符类型(signed char或char,当它被签名时),则永远不会有任何区别,如果A是无符号char类型(@ 987654334@ 或char(未签名时),那么int和char必须具有相同的大小才能显示差异。 -
0 +有什么用?即使在0 + 'A'中,它也毫无用处,甚至更少:) 在0 + (int)'A'中。 -
'A'是char,char是数字类型。根据标准 C 转换规则,当在二元运算符上与int配对时,它将被隐式转换为int。 -
@HotLicks
'A'是一个int。 C99 6.4.4.4:10 “整数字符常量的类型为 int。”
标签: c casting type-conversion