Juniorboy 发表于 2020-4-29 17:04:38

关于左值

#include <stdio.h>

int main()
{
      int a = 5;

      ++(a++);

      return 0;
}

为什么这里不行了呢,在for语句的时候不也是用的是i++了吗,
如果这样理解的话,那int i =0,i++的话等于0=0+1了,
但是这个左值理解了,一个存放变量的标识符。

qiuyouzhi 发表于 2020-4-29 17:07:28

a++是返回++后的值,也就是5
你不能给一个常量++,而i++,++的是变量
不是常量。

Juniorboy 发表于 2020-4-29 17:10:38

qiuyouzhi 发表于 2020-4-29 17:07
a++是返回++后的值,也就是5
你不能给一个常量++,而i++,++的是变量
不是常量。

没太明白您说的话,可以在详细一点吗,a++和i++不是一样的吗

zltzlt 发表于 2020-4-29 17:11:09

a++ 后得到的值是一个常量,常量不是左值,常量是无法改变的。

而 i++ 改变的是一个变量,变量是左值,所以没问题

qiuyouzhi 发表于 2020-4-29 17:13:09

Juniorboy 发表于 2020-4-29 17:10
没太明白您说的话,可以在详细一点吗,a++和i++不是一样的吗

是一样的,他们返回的值是什么?
是这个++后的值,也就是5(下一次操作才+1)
你不可以给5用自增操作。

Juniorboy 发表于 2020-4-29 17:13:38

zltzlt 发表于 2020-4-29 17:11
a++ 后得到的值是一个常量,常量不是左值,常量是无法改变的。

而 i++ 改变的是一个变量,变量是左值, ...

啊,您的意思是因为a++括号外面的那个++吗,本身a++没毛病,但是a++之后的值是6,是常量,而常量无法自增自减

永恒的蓝色梦想 发表于 2020-4-29 17:14:10

a++ 返回的是 a 的原来的值,不是 a 这个变量

zltzlt 发表于 2020-4-29 17:14:27

Juniorboy 发表于 2020-4-29 17:13
啊,您的意思是因为a++括号外面的那个++吗,本身a++没毛病,但是a++之后的值是6,是常量,而常量无法自增 ...

是的,但是提醒一下 a++ 后的值是 5,a++ 的意思是先使用 a 再将 a 加 1 。

Juniorboy 发表于 2020-4-29 17:15:31

qiuyouzhi 发表于 2020-4-29 17:13
是一样的,他们返回的值是什么?
是这个++后的值,也就是5(下一次操作才+1)
你不可以给5用自增操作。

明白了,谢谢

Juniorboy 发表于 2020-4-29 17:16:05

zltzlt 发表于 2020-4-29 17:14
是的,但是提醒一下 a++ 后的值是 5,a++ 的意思是先使用 a 再将 a 加 1 。

明白了,谢谢

qiuyouzhi 发表于 2020-4-29 17:16:41

Juniorboy 发表于 2020-4-29 17:15
明白了,谢谢

那就设个最佳答案吧~

Juniorboy 发表于 2020-4-29 17:21:51

qiuyouzhi 发表于 2020-4-29 17:16
那就设个最佳答案吧~

……对不起哈,已经设置完了不能更改了,下次看见您给您。晚上还有作业,如果您不建议的话,期待着您来帮助我&#128522;

qiuyouzhi 发表于 2020-4-29 17:22:32

Juniorboy 发表于 2020-4-29 17:21
……对不起哈,已经设置完了不能更改了,下次看见您给您。晚上还有作业,如果您不建议的话,期待着您来帮 ...

{:10_256:}没事,给zltzlt吧
他马上1000个最佳了(三个月连续)

Juniorboy 发表于 2020-4-29 17:24:32

qiuyouzhi 发表于 2020-4-29 17:22
没事,给zltzlt吧
他马上1000个最佳了(三个月连续)

{:10_297:}下次一定给您(如果您出现的话),其实每次最佳我都不知道怎么给,都是想帮我,{:10_243:}

qiuyouzhi 发表于 2020-4-29 17:27:03

Juniorboy 发表于 2020-4-29 17:24
下次一定给您(如果您出现的话),其实每次最佳我都不知道怎么给,都是想帮我,

{:10_256:}帮到就好,最佳不重要
页: [1]
查看完整版本: 关于左值