在以下的代码中为什么会出现这种情况:
short a = 4;
char b = 2;
cout << sizeof(a/b);
sizeof(a/b)是4吗?为什么不是short的大小为2?
short a = 4;
char b = 2;
cout << sizeof(a/b);
sizeof(a/b)是4吗?为什么不是short的大小为2?
这是因为表达式 a / b
的类型是 int
而不是 short
,所以结果是 4
。
在执行算术运算之前,会使用integral promotion将较短的整数类型提升为int。
因此,现在你的(较短的整数)操作数 a
和 b
被提升为 int
类型。因此,整个 a / b
表达式变成了 int
,而在你的机器上,int
类型的大小可能是 4
字节。
在你的情况下,sizeof 运算符返回表达式的类型 int
的大小,即 4
。 sizeof
运算符可以返回:
这种类型转换不叫做类型转换,而是整型提升。
a/b
是整数值并且sizeof(int)
为4。 - Mandy007auto c = a/b; cout << sizeof(c);
的结果将会是4。 - Eljay