这条看似微不足道的行来自 C 书 my Mike Banahan & Brady (Section 2.8.8.2)。
我可以理解隐式提升是如何在表达式中发挥作用的,例如c=a+b
取决于操作数的类型,但我无法理解如何以及在何种情况下同样可以出现在类似的东西中-b
,其中b是任何合法的操作数。你能解释一下,然后举一个恰当的例子吗?
提取的文本如下:
通常的算术转换适用于运算符的二进制形式的两个操作数。仅对运算符的一元形式的操作数执行整数提升。
更新:
为了避免被忽视,我在这里根据 OUAH 在评论中的回答添加了我所问的内容——这本书说' Only the integral promotions are performed
'......这是否意味着在这样的表达式x=-y
中,'x' 是一个长双精度数,而 'y' 是如果我们明确使用一元运算符,浮点数,'y' 不会被提升为长双精度数?我知道会是这样,但仍然要求它更清楚地了解“仅整数促销......”部分。
更新:
您能否举例说明以下按位运算符的提升是如何发挥作用的?对于最后三个,我是否应该假设每当在变量上使用它们时,它首先被提升为整数类型?前三个“通常的算术转换”到底是什么意思?你能举个小例子吗?如果可以在这里解决,我不想将其作为单独的问题发布。