在C++中,一元减号运算符如何处理整数文本
How the unary minus operator works with integer literals in C++?
我读到默认情况下对十进制文字进行签名
为了简单起见,假设int
可以保存的值是整数[-128127],long
可以保存整数128。现在,如果我对文本-128进行编码,会发生什么?我所知道的是,这里的字面意思只是"128",它不能放入int
,而应该放入long
!还是一元减号运算符做了其他事情
那么,一元减号是如何处理整数的呢?
来自cppreference.com:
整型文字的类型是根据使用了哪个数字基和哪个整数后缀而定的类型列表中第一个可以容纳该值的类型。
如您的示例所示,使用十进制基数且无后缀时,可能的类型为int
、long int
和long long int
。如果该值(忽略减号(适合long
,但不适合int
,则该值的类型为long
。
在确定类型之后,一元减号运算符将正常应用。将一元减号应用于long
会得到long
(即使结果可以放入int
(。
相关文章:
- 为什么文本运算符不能正常模板化?
- 用户定义的文本运算符(在原始模式下)存在问题
- 类模板中文本运算符的友元声明
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- 在C++中,一元减号运算符如何处理整数文本
- C++:比较运算符>和字符串文本的意外结果
- 将文本文件数据读入字符数组时提取运算符的歧义
- 在我的类中无法识别用户定义的文本运算符
- 重载运算符:使用C++文本时的操作数顺序
- 如何在命名空间中引用用户定义的文本运算符
- 长方程加法/减法计算器,从文本文件中提取运算符和数字
- 如何将文本传递给重载运算符
- 逐行读取文本文件并计数比较运算符
- 创建一个接受 2 个输入参数的文本运算符函数
- 重载>>运算符以读取文本文件
- 使用比较运算符和字符串比较函数读取文本文件的子部分时出现问题
- 有关重载用于读取文本文件的输入运算符>>的问题
- 错误:找不到斜杠" "字符串文本运算符
- 具有复制构造函数、简单赋值运算符和简单析构函数的动态大小的文本对象
- 为什么两个不同的文本字符串不能替换为 = 运算符?