C语言自增符号做函数参数 C语言中自增

C语言中函数关于自增自减i的问题。求解决啊。。

第一段代码:

创新互联主营苏尼特右网站建设的网络公司,主营网站建设方案,成都app开发,苏尼特右h5微信平台小程序开发搭建,苏尼特右网站营销推广欢迎苏尼特右等地区企业咨询

++i是先增加i的值,然后使用。

p=f(i,++i); 是先执行++i,后进行函数调用。因为执行了++i以后,i的值已经变成了3,

所以相当于p=f(3,3);

你可以在函数f里面把a和b的值打印出来,你会发现a和b都是3.

第二段代码:

i++是先使用i的值,然后把i的值加1.

所以相当于先执行p=f(2,2);

执行之后,把i的值变成3.答案应该是0.

我怀疑你们老师的课件写错了,建议你去问问他。

C语言自增运算符

(1)printf("%d", i++); 后缀,表达式里用 i, 出了表达式 自增1,故,分解为: printf("%d", i); i=i+1;

(2) printf("%d", ++i); 前缀,先自增,后用于表达式,故,分解为: i=i+1; printf("%d", i);

(3)(4) 同理,printf("%d", i--); 分解为:printf("%d", i); i=i-1;

printf("%d", --i); 分解为: i=i-1; printf("%d", i);

把分解后的语句组合起来,就可看出,输出为 40 42 42 40

c语言 函数参数自增运算符问题

编译器的不同 结果可能不同~~

p(i,++i)

有的传递的参数是2,3

有的传递的参数是3,3

运算顺序从左至右和从右至左~~

如果传递的参数是2,3 那么返回值为-1 如果传递的参数是3,3 那么返回0

C语言 自增自减运算符应用举例 求解!

x=5

-----

++x 6 x=6

--x 5 x=5

x++ 5 x=6

x-- 6 x=5

-x++ -5 x=6

-x-- -6 x=5

-----

我们把它们当成函数调用的形式来看,会比较好理解。i做为参数传入,

在(++i,--i中,++,--做为前缀运算符),表达式的值为i+1或i-1.返回值为i+1或i-1.

在(i++,i--中,++,--做为后缀运算符),表达式的值为i,返回值为i+1或i-1.

看到有什么不同了吗?

在++,--做为前缀运算符式,改变表达式的值,而作为后缀运算符时,表达式值不变。

共同点是,无论做前缀或后缀,返回值都自加或自减。

---------------------

....

int x=5; // x初始化值为5

printf("%d,",++x); // x=5,打印++x的值,++x的值为x+1 (5+1=6),返回值x+1,x=6

printf("%d,",--x"); // x=6,打印--x的值,--x的值为x-1 (6-1=5),返回值x-1,x=5

printf("%d,",x++); // x=5,打印x++的值, x++的值为x (5) ,返回值x+1,x=6

printf("%d,",x--); // x=6,打印x--的值, x--的值为x (6) ,返回值x-1,x=5

printf("%d,",-x++); // x=5,打印-x++的值, x++的值为x (5) -x=-5 ,返回值x+1,x=6

printf("%d,",-x--); // x=6,打印-x--的值, x--的值为x (6) -x=-6 ,返回值x-1,x=5

【表达式的值】 【返回的值】

....

ps:表达式的值和返回的值是两个概念,-x++,-x--可看做-(x++),-(x--).++,--的优先级高于+,-

C语言自加符号

C语言中区分前自增与后自增,它们都有副作用,尤其是后自增。

前自增可能更好一点,它不产生临时变量,效率更高一些。

++y相当于:y=y+1;在变量的使用之前先自增。

y++相当于:y; 其它语句... y=y+1;也就是使用它时,它的值不变,在其使用之后的某一时刻但在再次使用它前其值加一。而且不同的编译器不一定有一致的实现行为。

a=(y++)+(y++)+(y++) 这是一条语句,通常的编译器实现会将此语句一次性扫描完成。这种情况下,y++会保持其值不变,此语句完成后,将y的值递增3次。


当前标题:C语言自增符号做函数参数 C语言中自增
转载源于:http://scyanting.com/article/dodsigc.html