繁体   English   中英

integer 文字之间的运算结果类型是什么?

[英]What is the result type of operation between integer literals?

int main(){
 char a = 5 + (16711935 * 1200);
 return 0;
}

根据integer 文字的类型和 C中的转换规则16711935是 int 类型, 1200被提升为 int。 我的问题是这个乘法的中间结果在它被添加到 5 然后转换为 char 之前的类型是什么?

中间结果是否也遵循 integer 文字规则?

编辑:这个问题不是特定于乘法,它只是一个例子。

转换规则适用于所有涉及 integer 类型的操作,无论操作数是 integer 常量还是 integer 类型的对象。

在此表达式的情况下,integer 常量5167119351200都具有int类型(假设int为 32 位宽),因此不会对+=运算符的操作数进行转换。 结果表达式具有int类型,并在分配a char之前转换为 char。

应用于 integer 常量的类型在此页面上指定,源自C 标准的第 6.4.4.1 节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM