c - 为什么增量运算++a++ 不起作用,至少在 C 中是这样?

标签 c increment post-increment pre-increment

我很好奇,发现当前的代码不起作用,但我不明白为什么:

#include <stdio.h>

void main(){
        int a = 42;
        printf("%d\n", ++a++);
}

对我来说,这似乎不是一个错误的语法。有人可以解释一下错误输出吗?

first.c: In function ‘main’:
first.c:5:17: error: lvalue required as increment operand
  printf("%d\n", ++a++);

最佳答案

++a++ 等于 ++(a++) (因为 operator precedence ),并且 a++ 返回的值为一个non-lvalue object expression (也称为右值)。

此类值(本质上)是短暂的,无法通过前缀 ++ 运算符进行修改。

关于c - 为什么增量运算++a++ 不起作用,至少在 C 中是这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966237/

相关文章:

C:循环的替代方案

javascript - JavaScript 中的++someVariable 与 someVariable++

sql - 避免在SQL Server 2008中使用MAX + 1整数进行并发问题…制作自己的IDENTITY值

php - 预增量与后增量

java - Java中的For循环永远运行

c - 为什么我的程序在给出 -1 之前不添加数字?

c - 输出未知输入的十进制版本

c - 访问 PCIe 设备的内部寄存器

c - 遍历 proc 中的目录

c - C 中的优先级运算符