我对C语言中.含有自增和自减的算术表达式不怎么太理解. 谁能帮我解释解释下.最好通过几个事例讲解下.多谢
展开全部
你是在用turbo C2.0系统吗?
前缀++和后缀++运算是有基本运算规则:
前缀++是:先算后取,即先对运算对象进行加1运算,再取运算对象的当前值作为表达式计算结果,所以 y=++i; 在i的初值为3时,表达式运算后y的内容为4,i的内容为4。
后缀++是:先取后算,即先取运算对象的当前值作为表达式计算结果,然后对运算对象进行加1运算,所以 y=i++; 在i的初值为3时,表达式运算后y的内容为3,i的内容为4。
当在一个表达式中存在多个单目运算,特别是对同一个变量的单目运算时,初学时可能会觉得结果怪异,但实际上在Turbo C系统中的运算也是非常有规律的,即前缀单目运算的优先级高于后缀单目运算,所以整个表达式的运算过程是:
1、进行所有的前缀单目运算
2、取所有单目运算对象的当前值作为表达式的计算结果
3、进行所有的后缀单目运算
你所说的两个题目的运算过程是:
1、j=(i++)+(i++)
全部后缀运算,先取后算,取单目运算对象的当前值做表达式的计算结果
3 3
进行加1运算
i=4; i=5;
所以计算结果 j=6; i=5
2、j=(i++)+(++i);
先进行前缀运算
i=4
取所有单目运算对象的当前值作为表达式的计算结果
4 4
进行后缀运算
i=5
所以计算结果是 j的计算结果是4+4=8 i的内容为5
前缀++和后缀++运算是有基本运算规则:
前缀++是:先算后取,即先对运算对象进行加1运算,再取运算对象的当前值作为表达式计算结果,所以 y=++i; 在i的初值为3时,表达式运算后y的内容为4,i的内容为4。
后缀++是:先取后算,即先取运算对象的当前值作为表达式计算结果,然后对运算对象进行加1运算,所以 y=i++; 在i的初值为3时,表达式运算后y的内容为3,i的内容为4。
当在一个表达式中存在多个单目运算,特别是对同一个变量的单目运算时,初学时可能会觉得结果怪异,但实际上在Turbo C系统中的运算也是非常有规律的,即前缀单目运算的优先级高于后缀单目运算,所以整个表达式的运算过程是:
1、进行所有的前缀单目运算
2、取所有单目运算对象的当前值作为表达式的计算结果
3、进行所有的后缀单目运算
你所说的两个题目的运算过程是:
1、j=(i++)+(i++)
全部后缀运算,先取后算,取单目运算对象的当前值做表达式的计算结果
3 3
进行加1运算
i=4; i=5;
所以计算结果 j=6; i=5
2、j=(i++)+(++i);
先进行前缀运算
i=4
取所有单目运算对象的当前值作为表达式的计算结果
4 4
进行后缀运算
i=5
所以计算结果是 j的计算结果是4+4=8 i的内容为5
参考资料: http://zhidao.baidu.com/question/189253129.html
展开全部
这个问题很多初学者都不是很清楚
下面我举几个例子来说明下:
int i,j;
int c;
i=2;
j=3;
首先说明第一点:如果这些变量是单独运算的话那么++前与++后并无区别
但是如果放在了表达式中就有区别了
例如:
printf("%d",i++);
printf("%d %d",i,++i+j++)
这个时候就先使用i的值i为2,然后输出。结果就了2了。
在我进行第二条输出时,i经过上面的++运算后已经为3了。
此时由于++在前所以先++运算,i=4,再j++。j为3由于++在后,先取j的值。j=3
然后是i+j即4+3=7
所以输出的是7
不知道我这样说明下你明白了没有。还有不明白的话找我。
然后
下面我举几个例子来说明下:
int i,j;
int c;
i=2;
j=3;
首先说明第一点:如果这些变量是单独运算的话那么++前与++后并无区别
但是如果放在了表达式中就有区别了
例如:
printf("%d",i++);
printf("%d %d",i,++i+j++)
这个时候就先使用i的值i为2,然后输出。结果就了2了。
在我进行第二条输出时,i经过上面的++运算后已经为3了。
此时由于++在前所以先++运算,i=4,再j++。j为3由于++在后,先取j的值。j=3
然后是i+j即4+3=7
所以输出的是7
不知道我这样说明下你明白了没有。还有不明白的话找我。
然后
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自增自减道理相同,下面以自增为例:
1、前置++:如 ++i,注意前置++的优先级
2、后置++:如 i++,注意此表达式运算后的i值,另一个是表达式整个的返回值,注意区别对待
具体的说,如果想理解透彻,可以看看前置++与后置++的重载是怎么实现的:
1、前置++:++i;运算时i加1,然后返回i本身,所以此时,i值加1,这个表达式(++i)返回的值也是i+1;
2、后置++:i++;运算时先记录此时的i值,temp = i;然后i值加1;再返回temp的值,所以此时,i值加1,但表达式(i++)返回的值却仍是之前的i值。
弄清这点,运算时再注意运算符结合的优先级就可以了,注意区分i值与i所在表达式的返回值,注意参与运算的什么时候是i值什么时候是表达式的返回值
1、前置++:如 ++i,注意前置++的优先级
2、后置++:如 i++,注意此表达式运算后的i值,另一个是表达式整个的返回值,注意区别对待
具体的说,如果想理解透彻,可以看看前置++与后置++的重载是怎么实现的:
1、前置++:++i;运算时i加1,然后返回i本身,所以此时,i值加1,这个表达式(++i)返回的值也是i+1;
2、后置++:i++;运算时先记录此时的i值,temp = i;然后i值加1;再返回temp的值,所以此时,i值加1,但表达式(i++)返回的值却仍是之前的i值。
弄清这点,运算时再注意运算符结合的优先级就可以了,注意区分i值与i所在表达式的返回值,注意参与运算的什么时候是i值什么时候是表达式的返回值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中自增 自减是最简单的
--i 意思是(--i)是i自减1之后的值,然后i的值减1
比如--5 那么(--5)=4 5的值就变成4了
i-- 意思是(i--)是i未减之前的值,然后i的值减1
比如5-- 那么(5--)=5 5的值就变成4了
++i 意思是(++i)是i自增1之后的值,然后i的值加1
比如++5 那么(++5)=6 5的值就变成6了
i++ 意思是(i++)是i未增之前的值,然后i的值增加1
比如5++ 那么(5++)=5 5的值就变成6了
--i 意思是(--i)是i自减1之后的值,然后i的值减1
比如--5 那么(--5)=4 5的值就变成4了
i-- 意思是(i--)是i未减之前的值,然后i的值减1
比如5-- 那么(5--)=5 5的值就变成4了
++i 意思是(++i)是i自增1之后的值,然后i的值加1
比如++5 那么(++5)=6 5的值就变成6了
i++ 意思是(i++)是i未增之前的值,然后i的值增加1
比如5++ 那么(5++)=5 5的值就变成6了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自增自减都很简单,一样的,就是运算符的位置有点讲究。
++i是i先增加1,再执行与++i位于同条(分号前)的语句;i++则是在执行完同条语句后方才增加。比如说:
int i=0;cout<<++i;//输出1
int j=0;cout<<j++;cout<<j;//第一次输出0,第二次输出1:
++i是i先增加1,再执行与++i位于同条(分号前)的语句;i++则是在执行完同条语句后方才增加。比如说:
int i=0;cout<<++i;//输出1
int j=0;cout<<j++;cout<<j;//第一次输出0,第二次输出1:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询