C++;:Can a+;或者-告诉编译器一个值应该是int? 我是一个C++初学者,这似乎是个愚蠢的问题。请迁就我

C++;:Can a+;或者-告诉编译器一个值应该是int? 我是一个C++初学者,这似乎是个愚蠢的问题。请迁就我,c++,char,unsigned,static-cast,numeric-limits,C++,Char,Unsigned,Static Cast,Numeric Limits,我使用了static\u cast(numeric\u limits::min())和:max()(根据),但也发现可以在numeric\u limits之前使用+或-符号来获得相同的结果。我假设+/-基本上只是告诉编译器下一件事是一个数字,对吗?为什么我要使用它而不是静态的 我假设+/-基本上只是告诉编译器下一件事是一个数字,对吗 没有 +和-只是艺术运算符。对于数值操作数,一元减运算符更改右侧运算符的符号,一元加运算符不更改符号 即使操作数是无符号字符,结果仍然是int的原因是,如果所有算术

我使用了
static\u cast(numeric\u limits::min())
:max()
(根据),但也发现可以在numeric\u limits之前使用+或-符号来获得相同的结果。我假设+/-基本上只是告诉编译器下一件事是一个数字,对吗?为什么我要使用它而不是静态的

我假设+/-基本上只是告诉编译器下一件事是一个数字,对吗

没有

+
-
只是艺术运算符。对于数值操作数,一元减运算符更改右侧运算符的符号,一元加运算符不更改符号

即使操作数是无符号字符,结果仍然是int的原因是,如果所有算术运算符的所有操作数都是低秩的,则它们总是转换为int(如果操作数类型的所有值都不能用int表示,则转换为无符号int)。这种特殊的转换称为整数提升

为什么我要使用它而不是静态的


输入的字符更少。如果这对你有吸引力,那么也许你会用它来达到这个目的。如果不是,那么您可能应该改用静态强制转换。

您在该页面上看到的
+
符号称为“一元加号”运算符。你可能应该仔细阅读算术运算符,以便更好地理解正在发生的事情

该页面有以下关于一元加号的内容:

内置的一元加号运算符返回其操作数的值。它不是无运算的唯一情况是操作数具有整数类型或无范围枚举类型,该类型通过整数提升而改变,例如,它将字符转换为int,或者操作数进行左值到右值、数组到指针或函数到指针的转换。


与二进制加号不同(即有两个操作数),一元加号是一个在实践中不太常见的运算符,但要明确的是,它没有什么特别之处。和其他算术运算符一样,它可能会过载,这意味着很难说它的行为具有“通用性”。你需要知道它被用来预测它将要做什么的上下文。首先要对各种可用的运算符有一个明确的了解,然后逐步深入到这个特定的示例。

这称为整数提升。非常感谢!现在有道理了。非常感谢!现在有道理了。