May*_*ari 2 c operators lvalue
你好我正在学习C编程语言的基础知识,最近我研究了post和pre递增/递减运算符以及lvalue和rvalue,下面的程序显示了一个错误,需要左值,根据我应该给出值6,任何人都可以解释原因吗?
int main(){
int x = 8, y;
y = --x--;
printf("y=%d",y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请解释一下,为什么会这样?
好吧,让我们看看发生了什么--x--.首先,后减量执行:--(x--).
(x--) = 7.在此操作的结果被放置到原始结构之后:
--7- 没有意义 - 因此您得到lvalue required错误
该语句 y = --x--;将使您在编译时出现以下错误C。lvalue required。这是因为后减量运算符- rvalue对变量x进行运算后将返回a。因此,没有左值可以执行预减运算符-之后。
但是,这是一个点C和C++不同。在C下面的语句中也会给您同样的错误lvalue required。
y = (--x)--;
Run Code Online (Sandbox Code Playgroud)
但是在C++语句y = (--x)--;中将编译良好,并且yis 的值7。因为与C不同,C ++ lvalue对变量x执行预减运算符后返回a。
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |