C++ 算术操作数类型转换

C++ 算术操作数类型转换,c++,C++,以下代码中的原因: short a = 4; char b = 2; cout << sizeof(a/b); 短a=4; 字符b=2; cout它是4,因为表达式a/b的类型是int,而不是short。 摘自C++编程语言书: 在执行算术运算之前,是 用于从较短的整数类型中创建整数 因此,现在(较短的整数)a和b操作数被提升为int类型。因此,整个a/b表达式变为int,并且机器上类型int的大小可能是4个字节 本例中的运算符返回表达式类型的大小,即int,即4。sizeof操作

以下代码中的原因:

short a = 4;
char b = 2;
cout << sizeof(a/b);
短a=4;
字符b=2;

cout它是
4
,因为表达式
a/b
的类型是
int
,而不是
short
。 摘自C++编程语言书:

在执行算术运算之前,是 用于从较短的整数类型中创建整数

因此,现在(较短的整数)
a
b
操作数被提升为
int
类型。因此,整个
a/b
表达式变为
int
,并且机器上类型
int
的大小可能是
4个字节

本例中的运算符返回表达式类型的大小,即
int
,即
4
sizeof
操作员可以返回:

  • 字体的大小
  • 表达式类型的大小

这种类型转换不是类型转换,而是整体升级。

因为
a/b
是一个整数值,
sizeof(int)
是4
auto c=a/b;难道罗恩的回答没有错。。。但曼迪007的评论更好。你的例子说明了这一点。埃尔杰的评论只是一个“雾天”,现在已更正:)@Ron-已更正。回答很好:)