gpt4 book ai didi

c - 为什么 -(int) int 是任何 int 值,即右值?

转载 作者:行者123 更新时间:2023-11-30 20:01:33 24 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int i = 10;
printf("%d", ++(-i));
return 0;
}

这显然是一个编译错误,因为后(前)增量/减量采用左值。所以在这种情况下 -i 是右值,但是如何以及为什么?

最佳答案

预自增运算符++(以及其他类似的运算符)需要一个左值,它是一个不仅具有类型/值而且还引用对象的表达式。粗略地说,左值是可以放在 = 运算符左侧(但也有一些异常(exception))或放在 & (地址)运算符之后的内容(但这里也有一些异常(exception))。

术语“右值”是非左值表达式的俚语(未由语言标准定义)。对于-i来说,i是一个对象,但是没有对象-i-i 只是将 i 的值求反后的结果。无法将某些内容分配给 -i,因为它没有引用任何对象/存储。

关于c - 为什么 -(int) int 是任何 int 值,即右值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30922490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com