❶ c语言中为什么常量和表达式不能进行自增自减运算
首先说表达式,我们要知道自增和自减的原理,从表象上看自增自减对一个变量的值进行+1或-1操作。但是深入到底层的实现原理,这两个操作其实是对固定的内存地址内的值进行+1或-1。所以要能够自增自减首先就要满足有固定的内存地址,而对于表达式来说,最终表达式计算得到的结果如果不赋值给变量的话是没有固定内存地址记录这个值的。
再来说常量,虽然常量是有分配固定内存地址,但是常量的意义就是指‘不变化的量’,所以说这是类型限定了常量是不能被改变的,如果能变,那就不是常量了。
❷ C语言自增自减
先鄙视下教材中这种垃圾题。不同环境下值不一样的,我这里算出来等于8,24呢。
//下面这段是网络来的。
做类似(++n)运算是直接在内存中完成的,相当于是用汇编里的自加运算,直接修改内存中n的值. 因此,做第一次(++i)后,i=4,做第二个(++i)后,i=5;此时才做第一次括号外的加法,并把结果保存在临时变量中temp=10;而此时内存中的i已经是5了. 然后在做一次(++i),即i=6;此时i与临时变量temp相加,就是最终结果k=16.不信,你可再加一个(++i),此时,i=7;结果k为23.所以,这样完全可以推出它的运算机制.
❸ c语言关于自增自减的问题
计算:从右往左,并输出到“缓冲区”。
2.缓冲区是一堆栈
3.
第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8
<-(指针)
第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7
8<-
第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8
7
8
第四步:处理“++i”
先自增1,然后8进入缓冲区,i=8
.缓冲区:
8
8
7
8
4.输出缓冲区数据(栈规则):8
8
7
8
另外自增
自减
还可能和编译器有关系
淡定
语法问题
不要太纠结
❹ [c语言]自增、自减运算问题
四,关于i++,你完全可以理解为i的值被别的操作用了之后,自身再自增1。在真实的代码里,编译器会增加一个临时变量,比如一个寄存器,用来保存自增之前的值,这个值用于传递给printf函数,而在调用printf之前,i可能已经自增1了。因为有临时变量,所以两个操作都顺利完成了。
六,负号和++优先级相同,但在表达式中结合的方向是从右到左。即对于-i++,先执行i++,再执行-i。按照上述四的说法,编译器会给i生成一个和其自增之前相等的临时变量,用于作负运算。所以-i为8,i在++后为9,各不干扰
++应该算个难点,自己上机多感受一下,再把运算符的优先级顺序大致记一下,以后程序写多了,自然就慢慢懂了
❺ C语言后置自增什么时候自增(自减)
C语言中,后置自增(自减)是在执行完所在语句后,变量的值再自增(自减)。
举例说明如下:
intnum=0,s=0;
while(num++<3)
{
s=s+num;
}
//第1次执行while时,num=0,第1次执行完while后,num=1,此时,s=0+1=1
//第2次执行while时,num=1,第2次执行完while后,num=2,此时,s=1+2=3
//第3次执行while时,num=2,第3次执行完while后,num=3,此时,s=3+3=6
//第4次执行while时,由于num=4>3,所以推出循环,最后s=6
❻ C语言自增自减
在表达式里,像题目这种++,--。在变量前面就是先自增自减再取变量值。在变量后面先取变量值再自增自减。
比如:j=i++;意思就是先取i的值赋值给j,以后i再自增。后面代码也是这个意思。你可用这个思路跟着代码走一遍。
❼ c语言的自增自减问题
计算:从右往左,并输出到“缓冲区”。
1、缓冲区是一堆栈
2、第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 <-(指针)
第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8<-
第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8
第四步:处理“++i” 先自增1,然后8进入缓冲区,i=8 .缓冲区: 8 8 7 8
3、输出缓冲区数据(栈规则):8 8 7 8
另外自增 、自减 、还可能和编译器有关系 。
(7)c语言中能否自动自增自减扩展阅读:
后缀表达式 2级
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。
❽ C语言中自增自减问题
++b是说明先让数自加一,然后再执行b,就是(8+1)+(8+1)+(8+1),b值加三次一,就是11,然后再执行y值,11+11+11等于33