C语言中为什么常量和表达式不能进行自增自减运算?
14个回答
展开全部
首先说表达式,我们要知道自增和自减的原理,从表象上看自增自减对一个变量的值进行+1或-1操作。但是深入到底层的实现原理,这两个操作其实是对固定的内存地址内的值进行+1或-1。所以要能够自增自减首先就要满足有固定的内存地址,而对于表达式来说,最终表达式计算得到的结果如果不赋值给变量的话是没有固定内存地址记录这个值的。
再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。
再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。
展开全部
常量即是不可改变的量,而自增自减是会修改常量值的,所以凡是修改常量值的语句都违背了常量本身的定义,因而不能自增自减常量。
补充:常量表达式将在编译时而不是运行时计算,并且可在可使用常量的任何位置使用。 常量表达式的计算结果必须是位于该类型的可表示值范围内的常量。 常量表达式的操作数可以是整数常量、字符常量、浮点常量、枚举常量、类型强制转换、sizeof 表达式和其他常量表达式。
补充:常量表达式将在编译时而不是运行时计算,并且可在可使用常量的任何位置使用。 常量表达式的计算结果必须是位于该类型的可表示值范围内的常量。 常量表达式的操作数可以是整数常量、字符常量、浮点常量、枚举常量、类型强制转换、sizeof 表达式和其他常量表达式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
常量就是被 const 修饰的变量,因为被 const 修饰了,所以肯定不能进行自增自减操作,如果在代码中修改,编译器会检查不通过。
自增自减的本质是:
将数据从内存读取到寄存器
在寄存器中完成加1或减1操作
将数据从寄存器写回内存
表达式本身就会得出一个结果,这个结果没有被存储到内存中,所以上面的第1步就无法完成,下面的步骤当然也无法执行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是c语言设计之初就规定的,常量不能自动递增,如果能自动递增就不叫常量了,就叫变量了。表达式就更不用说了~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询