C语言自增自减运算符我总是搞不明白,图中这三道题我就又错了,希望有会的人能给我解答一下? C语言的自加自减运算符

作者&投稿:冯昭 (若有异议请与网页底部的电邮联系)

6、x<y?x++:y++这个表达式的意思是 如果x<y为真 就执行x++ ;如果x<y为假 就执行y++ 这里显然是执行y++ 返回值是2

希望对你有帮助

----满意采纳奥----


4、

首先 i++==1&&(++j==3||k++==3) 是一个bai逻辑表达式

i++==1&&(++j==3||k++==3) 分为两部分

i++==1 和 (++j==3||k++==3)

他们的关du系是 并且的关系

所以 两部分都会zhi被执行

i++==1

是先 判断i是否等于1 (因为++在后面) 此时i=1;

在这句话执行完之后i=2

然后执行第二部分

(++j==3||k++==3)

又分为两部分

++j==3 和 k++==3 两部分

这两部分是 或者的关系

如果第一部分满足条件 就不执行后面的

如果第一部分不满足条件 就执行后面的部分

++j==3

是j先自己加1然后判断j是否等于3

这部分的结果为真

所以后面的部分不执行

最后的结果为 i=2 j=3 k=3



第1题:++在后面时,该语句执行完了再执行自加。所以,4<2不成立,取Y值,Y此时并没有改变,所以为2。
第2题:这个有点儿难度。关键在于为什么K的值是3不是4。因为那个“或”运算,前面的++j已经为真,所以不再判断K,即不执行K++,所以,K没变。
第3题:不用多说了,--在后面,在printf时,还是原值23。然后执行完printf后它后立马变为22,此时while里面的值才变为!22。
楼主,还有什么疑问吗?
还有这样的题目,i=1;a=i++;b=a;c=i+++i++;让求abc的值。如果把;号换成,又会怎么样,都是类似的。即自加自减,都是以一个语句为单位范围的。

C语言自增自减运算符用法~

C语言的前置++和后置++,称为自增运算符
前置--和后置--称为自减运算符,下面以自增运算符的区别来加以介绍,自减类似

如果单独写 自增运算符为一个语句,二者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是如果把自增运算符写入到另外表达式中二者就有很大区别了

例如
i=5;
j=i++;
执行后i为6,j为5
i=5;
j=++i;
执行后i为6,j为6

这两个都是未定义行为,因为(y++)+(y++)+(y++)里面没有顺序点,所以你无法保证执行完第一个y++之后,y的值是否增加了,如果增加了,那么第二个y++就会是6。
只有顺序点才能确定一个副作用被实现,在这里,副作用就是确保y++之后,y加1。
下面的那个++y亦是同理。


至于什么是顺序点,可以参考这个:
C/C++语言定义(语言的参考手册)明确定义了顺序点的概念。顺序点位于:
1. 每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句,return语句的表达式,以及条件、循环和switch语句的控制表达式(for头部有三个控制表达式);
2. 运算符 &&、||、?: 和逗号运算符的第一个运算对象计算之后;
3. 函数调用中对所有实际参数和函数名表达式(需要调用的函数也可能通过表达式描述)的求值完成之后(进入函数体之前)。

C语言自增自减运算符我总是搞不明白,图中这三道题我就又错了,希望有...
答:6、x<y?x++:y++这个表达式的意思是 如果x<y为真 就执行x++ ;如果x<y为假 就执行y++ 这里显然是执行y++ 返回值是2 希望对你有帮助 ---满意采纳奥--- 4、首先 i++==1&&(++j==3||k++==3) 是一个bai逻辑表达式 i++==1&&(++j==3||k++==3) 分为两部分 i++==1 和 (...

c语言中的 自增和自减运算符自学看不懂
答:前置就是++i(或--i),是先运算即先对i自增1,后操作即对i进行后续操作。例如:i=1,y=++i 则对i是前置自增运算,因此i先自增1,i=2,后对i进行操作即取i的值赋值给y,则y=2。后置就是i++(或i--),是先操作即对i进行操作,后运算即对i自增1。例如:i=1,y=i++ 则对i是后置...

C语言中关于自增自减的用法?不明白了,谁告诉我下答案呢?下面运行会出什...
答:++,--有两种用法,一种是在前(++a,a--),一种是在后(a++,a--),在前面的表示先给a加/减一,再用a的值;后一种是先用a的值,再给a加/减一;例如:a=2,b=++a;结果a=3,b=3;b=a++;结果b=2,a=3;运行结果:include <stdio.h> void main(){ int i=5,j;j=++i+i++;...

C语言自增自减运算符深入剖析
答:自增自减运算符语法自增运算符 ++ 使操作数的值加1,其操作数必须为(可简单地理解为变量)。对于自增就是加1这一点,Eric想大家都不会有什么疑问。问题在于:++ 可以置于操作数前面,也可以放在后面,如:++i;i++ ;++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增...

JAVA 自增自减运算符问题
答:首先,必须先弄清++(自增)和--(自减)运算符的基本用法先:++a:即先自加1之后再进行运算,程序中int b=++a;其中a的值为5,先自加1,也就是a为6,然后再赋值给b,那么b的值为6 a++:即先进行运算之后再自加1,如果程序中int b=a++;那么b的值为5.再来看程序就不难得出答案了:1 ...

C语言 自增自减 谁能详细说明一下。。。谢谢了 我都晕了。。。_百度...
答:例一:a=++b-++c ;相当于:a = (++b) - ( ++c);进一步扩展:b=b+1;c = c+1 a = b - c 例2:a = ++b+++c;相当于:a =( ++(b++)) + c ;在归属运算符时, 后++优先级高于 前++, 但运算是在最后执行。进一步扩展:b = b+1 ; // b的前++ a = b ...

我对C语言中.含有自增和自减的算术表达式不怎么太理解. 谁能帮我解...
答:1、进行所有的前缀单目运算 2、取所有单目运算对象的当前值作为表达式的计算结果 3、进行所有的后缀单目运算 你所说的两个题目的运算过程是:1、j=(i++)+(i++)全部后缀运算,先取后算,取单目运算对象的当前值做表达式的计算结果 3 3 进行加1运算 i=4; i=5;所以计算结果 j=6; i=5...

c语言的自增自减问题
答:第二步:处理“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 另外自增 、自减 、还可能和编译器有关系...

一到c语言题看不懂啊,我一直搞不懂自增和自减,解析说分前置和后置,前置...
答:x--先使用后减 x=5 if(x--<5)//可理解为if(x<5) 当判断结束后执行x=x-1 故而进入 else printf(“%d\n”,x++) 可视为printf(“%d\n”,x) 执行后 x=x+1 则输出结果为4,但是程序最后x的值为5