C语言中x=(a++)*(++a)和x=(++a)*(a++)运算后是多少?

作者&投稿:成王界 (若有异议请与网页底部的电邮联系)
a*=2+3 运算后a的值是多少,c语言题目~

是60,因为+的运算优先级高于*=,所以2+3先执行,则a*=2+3等价于a=a*(2+3)=12*5=60

这么说吧,在系统眼里,a=x+++y
就等同于
a=(x++)+y
也就是说,用X的值加上Y的值,然后赋给A。之后再让X的值自加1。
a=x+++y

a=x+y;x++;
是等价的。

a++是语句结束后在后加,
++a是先加后计算再语句结束
x=(a++)*(++a);只执行了++a,得出结果x=16后,即本条语句执行完了,再执行a++,得出 a=5

所以结果是一样的
如果是
x=(a++)*(a++)
x=9,a=5 因为在本语句中a++没执行 x=9之后 才自加2次 a=5
x=(++a)*(++a)
x=25,a=5 因为本语句中先执行++a,自加2次,x=25,a=5

令i=3;

++i,i++;都是将i加1,但是
令x=(++i); y=(i++);
++i是返回i加1后的值,故等于4即x=4;
i++是返回i加1之前的值,故还是等于3即y=3;

楼主这时的疑问来了:
为什么不是12 和16呢?

但再这语句结束后,i都等于4;(***注意这句话***)

注意:x*y,这句话,是先对x里面的东西进行计算,对y里面的东西进行计算,谁先计算不一定,可以看成是同时的进行计算的。在这之后(注意这句话,下面用到的),在进行乘法运算!

注意:在这之后,说明那个(++i)和(i++)语句执行完毕,再看上面的括号里有***那句,明白了吗?此时x和y都等于4,所以是16不是12;

举个例子:

int i = 3, j = 3;
j++;

printf("%d, %d",(i++), j);

输出的是3和4,不信试试。

显然是一样的
x = (++a)*(a++)

x = (a++)*(++a)
都是先扫描,因为都含有++a,所以先把a变为4
然后做乘法 16
最后在对a++,a变为5

a = 3;
x=(a++)*(++a) -- 先++a,再a*a,之后a++
下面的一样...

ree


C语言中x=(a++)*(++a)和x=(++a)*(a++)运算后是多少?
a++是语句结束后在后加,++a是先加后计算再语句结束 x=(a++)*(++a);只执行了++a,得出结果x=16后,即本条语句执行完了,再执行a++,得出 a=5 所以结果是一样的 如果是 x=(a++)*(a++)x=9,a=5 因为在本语句中a++没执行 x=9之后 才自加2次 a=5 x=(++a)*(++a)x=25,a=5 ...

在C语言中 int a,b,x; x=(a=-1)&&(b=-2); 之后输出x的值为什么是1
在C语言中 int a,b,x; x=(a=-1)&&(b=-2); 之后输出x的值为什么是1 &&是逻辑与,因为a不为0,所以继续看b,b也不为0,所以x为1. 就是说,&&是判断左右两边是否为真,而0为假,非0皆为真,所以整个式子为真。c语言中x=-8;y=0<=x<=10;输出的y值为什么是1 根据运算子...

C语言中: int x,a,b; x=(a=3,b=++a); x为什么等于4
(a=3,b=++a)是逗号表达式,计算机会顺序执行其中的语句,整个表达式是最后一个语句的计算结果 先执行a=3;现在变量a的值为3 然后执行a++;由于++出现在变量a前面,所以这个自加运算会在给变量b赋值之前执行完毕 接着执行b=a;则最后一个语句的结果就是b的值 最后执行x=b;所以x的值是4 ...

C语言运算的问题
b=a--,先将a的值赋给b,a再自减1 a=3,b=a=3,然后a自减1,a=2 x=(a=3,b=a--),右边为逗号运算符,从左至右执行各语句,并将最后一个语句的计算结果赋给x,对于本题,也就是将b的值赋给x。x=3 因此,执行语句x=(a=3,b=a--);后,x的值是3,a的值是2,b的值是3...

在c语言中,语句x=!a==b的执行次序
!的优先级别最高,关系运算符优先级别优先于赋值运算符,所以先算(!a)在判断是否==b,最后赋值给x

C语言x=a%10什么意思
x=a%10;就是把a对10求余赋值给x 其实就是得到a的个位赋值给x

两道C语言题目,求答案和解析,谢谢~
第9题:【C】核心知识点:1、逗号表达式,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。2、++a与a++的区别,前者为先自加1而后引用当前值参与计算,后者为先引用当前值参与计算而后自加1。x=(a=3,b=++a);1)执行a=3,此时a值为3;2)执行++a,此时a值为4;3)执行b=++a...

C语言里,怎样理解表达式(x=a>b)&&(y=c>d)的意义?
将a>b的值赋值给x 将c>d的值赋值给y 然后进行逻辑与运算。 关键是优先级

c语言中x=a>b怎样理解
优先级 赋值运算符低于 > 关系 运算符, 所以, 先算 a > b是0还是1,然后 赋值给x;

关于2级C语言的几个问题(详细解答一下,谢谢!)
char x='A'; 是定义一个变量x并赋值为字符A x=(x>'A'&&x<='Z')?(x+32):x; 这是个选择语句,括号里的x>'A'&&x<='Z'表示条件,意思就是在A到Z之间的字母,也就是所有大写字母,因为是 >'A'不是>=‘A',所以不包括A,当条件满足时就执行x=x+32,大写字母 +32就转换成小写...

宜良县15325247146: 在c语言里, a=1; x=(++a)+(++a); printf(“%d”,x)为什么等于6 -
长孙实安坤: x=(++a)+(++a); 是一个语句,所以要先算两个++a,a两次自加1后就是3了,然后再算x=3+3=6

宜良县15325247146: 在C语言中x=a++*a==*a++ 则X=多少?
长孙实安坤: a 没有定义啊,应该是先定义在赋值后使用

宜良县15325247146: 在C语言中a=a++是否正确?为什么? -
长孙实安坤: 这行的意思是a先加1, 然后将未增加的a再赋给a,也就是a的值应该没有改变

宜良县15325247146: x:=a+x在C语言中是什么意思? -
长孙实安坤: 在C语言中没有这种表示,这种表示的意思是定义x, 使得x=a+x

宜良县15325247146: a*=a++*++a这个c语言表达式是怎么算的? -
长孙实安坤: 标准的答案!这个等式具体运算过程有点复杂.我把这个等式拆分开来解释,再说最终效果.“a*=b”等同于“a=a*b”.“a++”是先获得“a”的值去进行运算,再把“a”加1.“++a”是先把“a”加1,再获得“a”的值去进行运算.“a*=a++*++a”等同于“a=a*a*(a+1+1)”.

宜良县15325247146: c语言中 a++和++a到底是什么意思啊 我老是看不懂 希望说的详细点 谢谢了 -
长孙实安坤: a++,先使用后计算(对变量a来说) ++a, 先计算后使用(对变量a来说) eg: main(){ int a=0,b=0;printf("%d",a++);/*结果 0 (先使用,在下一次使用a变量时 a=a+1 )*/b=a+1;/*此时a值为1 b值为2(后计算)*/ printf("%d",++a);/* a=a+1后再打印 (同上介绍,先计算后使用)*/}还有不懂的联系 QQ:3807239

宜良县15325247146: 在标准的c语言中a=3;(a++)+(a++)+(a++)=多少 -
长孙实安坤: 如果int b=(a++)+(a++)+(a++)的话 表达式过后,b=9;如果看 (a++)+(a++)+(a++)= 这个的话,这是给常数赋值,属错误

宜良县15325247146: C语言中定义int a=1 ,x ; 逗号表达式(x=a++,x=a -- );的值是多少的? -
长孙实安坤: x=a++,先把a的值赋给x后a+1,所以x=1,a=2,然后x=a--,也就是把a赋给x,所以x=2,a再自减a=1 逗号表达式的值是最右边的表达式的值,所以逗号表达式的值是x=2(没有a=1)

宜良县15325247146: 我想知道C语言中++A和A++有什么区别,请高手讲解,谢谢 -
长孙实安坤: 你可以这样来想:++a和a++,都是个表达式,最后的结果就取决于是先加,还是后加,如果是先加,那么最后的表达式的结果就是a的值加1,如果是后加的话,则表达式的值就是原来a的值;而无论是先加,还是后加,a的值计算后一定会加1.比如:如果a=1,b=a++,运算完b=1,a=2 如果a=1,b=++a,运算完b=2,a=2

宜良县15325247146: C语言A++ ++A 的意思\C语言!=的意思 -
长孙实安坤: 首先你要明白什么是表达式,还有变量. A是一个变量. A++,++A都是A加了1. 比如A原来是1,执行了A++或++A后,A变量的值就是2了 至于A++和++A的区别主要是在表达式上的区别. ++A是先执行了A加1后,参与表达式的计算. A++是A先...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网