C语言中为什么常量和表达式不能进行自增自减运算?

 我来答
ispiders
2017-09-27 · TA获得超过1240个赞
知道小有建树答主
回答量:517
采纳率:80%
帮助的人:206万
展开全部
首先说表达式,我们要知道自增和自减的原理,从表象上看自增自减对一个变量的值进行+1或-1操作。但是深入到底层的实现原理,这两个操作其实是对固定的内存地址内的值进行+1或-1。所以要能够自增自减首先就要满足有固定的内存地址,而对于表达式来说,最终表达式计算得到的结果如果不赋值给变量的话是没有固定内存地址记录这个值的。

再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。
弑之觞
2017-10-17 · TA获得超过283个赞
知道小有建树答主
回答量:150
采纳率:94%
帮助的人:151万
展开全部
(1)常量不能进行自加自减运算。如4++,与其等价的表示形式为4 =4+1,不符合赋值表达式的要求。特别注意的是在C语言中数组名和函数名都是常量,故不能进行自加自减运算 。
(2)表达式不能进行自加自减运算。如(x+y)++,与其等价的表示形式为x+y=x+y+1,不符合赋值表达式的要求。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三天打鱼N
2017-09-08 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:599万
展开全部
常量即是不可改变的量,而自增自减是会修改常量值的,所以凡是修改常量值的语句都违背了常量本身的定义,因而不能自增自减常量。
补充:常量表达式将在编译时而不是运行时计算,并且可在可使用常量的任何位置使用。 常量表达式的计算结果必须是位于该类型的可表示值范围内的常量。 常量表达式的操作数可以是整数常量、字符常量、浮点常量、枚举常量、类型强制转换、sizeof 表达式和其他常量表达式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阴阳乾坤123
2017-08-20 · TA获得超过751个赞
知道小有建树答主
回答量:545
采纳率:75%
帮助的人:203万
展开全部
  1. 常量就是被  const 修饰的变量,因为被 const 修饰了,所以肯定不能进行自增自减操作,如果在代码中修改,编译器会检查不通过。

  2. 自增自减的本质是:

  • 将数据从内存读取到寄存器

  • 在寄存器中完成加1或减1操作

  • 将数据从寄存器写回内存

表达式本身就会得出一个结果,这个结果没有被存储到内存中,所以上面的第1步就无法完成,下面的步骤当然也无法执行了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第五竹月赖含
2019-02-01 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:686万
展开全部
这是c语言设计之初就规定的,常量不能自动递增,如果能自动递增就不叫常量了,就叫变量了。表达式就更不用说了~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式