当前位置: 首页 > 知识库问答 >
问题:

算术运算符必须将整型参数提升为int吗?[副本]

段干德泽
2023-03-14

CP首选项说:

特别是,算术运算符不接受小于int的类型作为参数,如果适用,在左值到右值转换后,会自动应用整数提升。

所有主要的编译器(g、clang和msvc)都说,当a和b都是short时,decltype(a b)是int。

但是,标准说:

整数升级[conv.prom]/1整数转换秩小于int的整数类型的PR值可以转换为int类型的PR值。

常用的算术转换[表达式算术转换]/1.5.1
--如果两个操作数的类型相同,则无需进一步转换。

我只能看到“可以转换”,我找不到算术运算符需要积分提升的地方<这里的cppreference错误吗?

共有1个答案

苏涛
2023-03-14

你离它只有一行之遥。来自[exr]/11(N4659):

许多期望算术或枚举类型操作数的二元运算符以类似的方式引起转换并产生结果类型。目的是产生一个通用类型,它也是结果的类型。这种模式称为通常的算术转换,定义如下:

...

否则,将对两个操作数执行整数提升(7.6)。然后将以下规则应用于提升的操作数:

增加了强调。【conv.prom】说它们可以发生,它们是如何工作的。[expr]/11指定它们将发生的时间之一。

 类似资料:
  • 我这里有这个代码: 但我得到了错误信息: 接线员 为什么呢?如何修复代码? 以下是代码的文本形式:

  • 我是新来的处理,我有这个问题。我一直收到下面代码中粗体部分的错误消息。我的语法错了吗?

  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,覆盖了所有主要的运算。 概述 JavaScript 共提供10个算术运算符,用来完成基本的算术运算。 加法运算符:x + y 减法运算符: x - y 乘法运算符: x * y 除法运算符:x / y 指数运算符:x ** y 余数运算符:x % y 自增运算符:++x 或者 x++ 自减运算符:--x

  • 我的Java代码没有什么问题。我正在使用下面的代码,但Eclipse总是提示相同的消息“参数类型Test1,int的运算符未定义”。但是如果我将代码更改为“System.out.println(test1”“100);”或“System.out.println”(“100 test1”)或“System.out.println(100”“test1);”,没有问题。 有人对此有想法吗?请帮忙。多谢

  • 在我的代码中,我一直得到这样的错误:操作符!=对于参数类型boolean和int是未定义的,我不知道该怎么做来修复它。该错误出现在eclipse内部以及启动时 如有帮助,我们将不胜感激:)谢谢!