C语言的自加自减运算符
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/26 04:30:47
C语言的自加自减运算符
比如y的初值为5,
为什么a=(y++)+(y++)+(y++)的值是15 难道每一次y++的值都不变?
但是建立一个新程序 ,y的初值还是5
b=(++y)+(++y)+(++y)的值是22,这又是为什么?
比如y的初值为5,
为什么a=(y++)+(y++)+(y++)的值是15 难道每一次y++的值都不变?
但是建立一个新程序 ,y的初值还是5
b=(++y)+(++y)+(++y)的值是22,这又是为什么?
这实在是个令人纠结的问题.
C语言中区分前自增与后自增,它们都有副作用,尤其是后自增.
前自增可能更好一点,它不产生临时变量,效率更高一些.
++y相当于:y=y+1;在变量的使用之前先自增.
y++相当于:y; 其它语句...y=y+1;也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一.而且不同的编译器不一定有一致的实现行为.
a=(y++)+(y++)+(y++) 这是一条语句,通常的编译器实现会将此语句一次性扫描完成.这种情况下,y++会保持其值不变,此语句完成后,将y的值递增3次.
b=(++y)+(++y)+(++y)这也是一条语句,编译器扫描完此语句后,先将y递增3次,再作+运算,将运算结果赋予b,此时b应该为24.但是不同的系统及编译器不一定这样实现,还有可能y依次递增,其结果是21.
再问: 但是在VC里面编译执行的时候结果是22...而且单独执行b=(++y)+(++y);的时候结果是14...
再答: 所以最好不要这样使用自增,副作用无法估计,最好单语句使用
C语言中区分前自增与后自增,它们都有副作用,尤其是后自增.
前自增可能更好一点,它不产生临时变量,效率更高一些.
++y相当于:y=y+1;在变量的使用之前先自增.
y++相当于:y; 其它语句...y=y+1;也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一.而且不同的编译器不一定有一致的实现行为.
a=(y++)+(y++)+(y++) 这是一条语句,通常的编译器实现会将此语句一次性扫描完成.这种情况下,y++会保持其值不变,此语句完成后,将y的值递增3次.
b=(++y)+(++y)+(++y)这也是一条语句,编译器扫描完此语句后,先将y递增3次,再作+运算,将运算结果赋予b,此时b应该为24.但是不同的系统及编译器不一定这样实现,还有可能y依次递增,其结果是21.
再问: 但是在VC里面编译执行的时候结果是22...而且单独执行b=(++y)+(++y);的时候结果是14...
再答: 所以最好不要这样使用自增,副作用无法估计,最好单语句使用
c语言 在函数中如果变量经过自加和自减运算后,函数执行完成后,经过自加和自减的变量会变成零?求解释啊
C语言负数的自加自减可不可以,如果可以怎么算?
C语言的自增自减运算:x=3 ,y=-x+++x x等于多少?
C语言指针的自增自减问题,急!
关于C语言计算的两道题目.自加自减,了解的帮忙解答下~
C语言中,有些运算是自左向右的,也有好多自右向左的,到底哪些是自右向左的啊,
c语言中条件表达式的运算顺序不应该是自左向右吗?为什么a
在C语言中负数能做自减运算吗?
在C语言中,下列运算符中结合性属于自右向左的是?A.&& B.- C. Why?
c语言自增自减运算题目 int x=5,y; y=2+(x+=x++,x+8,++x); printf("%d",y);
c语言的自增自减运算1:表达式 a=3,a++,--a的值为什么?2:s=3,s++,s;这个语句执行完之后,s的值为什
自B自C式的成语