在C++中,一元减号运算符如何处理整数文本

How the unary minus operator works with integer literals in C++?

本文关键字:文本 运算符 何处理 处理 整数 一元 C++      更新时间:2023-10-16

我读到默认情况下对十进制文字进行签名
为了简单起见,假设int可以保存的值是整数[-128127],long可以保存整数128。现在,如果我对文本-128进行编码,会发生什么?我所知道的是,这里的字面意思只是"128",它不能放入int,而应该放入long!还是一元减号运算符做了其他事情
那么,一元减号是如何处理整数的呢?

来自cppreference.com:

整型文字的类型是根据使用了哪个数字基和哪个整数后缀而定的类型列表中第一个可以容纳该值的类型。

如您的示例所示,使用十进制基数且无后缀时,可能的类型为intlong intlong long int。如果该值(忽略减号(适合long,但不适合int,则该值的类型为long

在确定类型之后,一元减号运算符将正常应用。将一元减号应用于long会得到long(即使结果可以放入int(。