int a; a=1; printf("%d ",a+=a-=a*a); 我知道结果是0,但不知道怎么来的,求解答

2023-12-02 09:33:54
共4条回复
北有云溪

首先明白这些运算符的结合顺序,

应该是从右往左,所以先算a*a=1,然后算a-=,

即运算a=a-1;得到a=0;然后再算a+=,

a+=等同与a=a+前边的结果0;现在a=0,所以a=0+0,

所以结果为0。

七秒真人

int a; a=1; printf("%d ",a-=a*a); 这样也是0.即a=0,然后a=a+0;

北境漫步

从右往左分解:

a=a*a; //结果为a=1

a=a-1; //结果为a=0

a=a+0; //结果为a=0

敬岭

是这样算的:a+=(a-=(a*a));先算括号里面的。

1.a*a=1

2.a-=a*a;等于a=a-(a*a);则a=0;

3.a+= a-=a*a 则等于0;

相关推荐

a+=a-=a*a怎么算?

a+=a-=a*a是一个连续赋值运算,计算顺序是自右至左的。如果int a=2;a+=a-=a*a;相当于:1.a-=a*a。2.a+=a。然后相当于:1.a=a-a*a。2.a=a+a。由于a初始化为2。1.a=a-a*a=2-2*2=-2。2.a=a+a=-2+(-2)==-4。所以最后结果就是-4。注意事项:1、赋值运算符满足右结合律,C++允许连续赋值操作。EX:int ival,jval。ival=jval=0;//ival,jval都被赋值为0。string s1,s2。s1=s2="OK";//s1,s2都被赋值为同一个字符串"OK"。对于多重赋值的每一个对象,它的类型或者与右边对象的类型相同,或者可以由右边类型的对象转换得到。int ival,*pval。ival=pval=0;//Error,不能把指针的值赋给int。2、c中不可以再定义变量时对变量进行连续赋值。例如 int x=y=2;“=” 。运算符是从右至左结合,把2赋值给y,但此时y还没有定义,违反了c中先定义后使用原则。 正确写法 int x,y; x=y=2。
2023-12-01 14:13:081

a+=a-=a*a怎么计算啊

a+=a-=a*a是一个连续赋值运算,计算顺序是自右至左的。如果int a=2;a+=a-=a*a;相当于:1.a-=a*a;2.a+=a;然后相当于:1.a=a-a*a;2.a=a+a;由于a初始化为2:1.a=a-a*a=2-2*2=-2;2.a=a+a=-2+(-2)==-4;所以最后结果就是-4。扩展资料C语言中提供常用赋值运算符:等号运算符。1.计算赋值运算符右侧表达式的值。(“=”为赋值运算符)2.将赋值运算符右侧表达式的值赋给左侧的变量。3.将赋值运算符左侧的变量的值作为表达式的值。赋值表达式是类似这样的句子:a=5 注意后边没有分号, a=5; 这就是一个赋值语句了。赋值表达式的结果是最左边的赋值运算符(最左边的等号)左边的变量(或者表达式)的值。赋值运算符的优先级和结合性1.优先级较低,只比逗号运算符高。2.从右向左结合。例如:x=y=3 就相当于 x=(y=3) 结果都为3
2023-12-01 14:13:284

c语言中a+=a-=a*a如何计算

a+=a-=a*a;为连续赋值运算,从右向左计算。于是原始的表达式等效于:a-=a*a;a+=a;也就是a=a-a*a;a=a+a;例如,a=5;那么a=a-a*a=5-5*5=-20;a=a+a=-20 + (-20) = -40;最终a为-40,表达式整体值也就是a最终值,一样是-40。
2023-12-01 14:13:521

请问大神a+=a-=a*a怎么运算?

a+=a-=a*a;a+=(a-=a*a);a+=(a-=(a*a));
2023-12-01 14:14:001

请大家忙个忙: int a =4; a += a -=a*a; 这怎么算,步骤写详细点 谢谢?

a+=a-=a*a的执行顺序是先算a*a,再算a-=a*a,最后算a+=aa*a=16,所以a-=a*a即为a-=16,a=4-16=-12,a+=a,即为a+=-12,a=-12+(-12)=-24。
2023-12-01 14:14:091

复合赋值运算a+=a-=a*a

复合运算符左边必须是变量,右边的表达式计算完成后才参与复合赋值运算。语言运算符的优先级,结合方向为从右到左.从右往左计算并附值第一步:a-a*a=a=-6第二步:a+a=a=-12a+=a == a=a+aa-=b == a=a-b从左至右计算,从右至左附值所以答案为-12
2023-12-01 14:14:182

c语言中a+=a-=a*a怎么运行

赋值是从右到左运行。先计算a*a=9,此时a=3,没变。然后计算a-=9,此时a=-6,a值改变。最后计算a+=-6,a=-12。a的最终值为-12。更多的详细资料请参考运算符的优先级进行推理:
2023-12-01 14:14:294

老师好,我想问一下a+=a-=a*a,这里是如何拆分的,还有+=-=是怎么来算的?

结果为0.连续赋值运算,计算顺序是自右至左的。所以 a+=a-=a*=a计算顺序是1 a*=a;2 a-=a;3 a+=a;也就是1 a=a*a;2 a=a-a;3 a=a+a;可以看到,无论a值是多少,第一步的结果是多少,到第二步的时候,a的值都会是0.所以最终结果,也就是第三步的结果,仍为0。最终a为0。
2023-12-01 14:14:421

求c语言高手解设有语句:int a=3;执行语句a+=a-=a*a;求变量a的值

赋值运算顺序自右而左,首先算a*a,即3*3的值为9,然后算a-=9,即a=a-9,值为-6,最后算a+=-6,即a=a+(-6),值为最后值为-3
2023-12-01 14:14:535

C语言中定义int a=6,则表达式a+=a-=a*a等于多少? 请说明计算过程 谢谢

a+=a-=a*a等于-60自右向左执行a+=a-=a*a相当于a=a+(a-=a*a)a-=a*a相当于a=a-a*a执行1:a*a=36执行2:a=a-36,代入a=6得,a=-30执行3:a=a-30,代入a=-30得,a=-60
2023-12-01 14:15:144

C语言:a=3,a+=a-=a*a,求a

a=-12。赋值语句,从右到左依次运行:那么:int a=3;a+=a-=a*a;相当于:1.a-=a*a;2.a+=a;相当于:1.a=a-a*a;2.a=a+a;由于a初始化为3:1.a=a-a*a=3-3*3=-6;2.a=a+a=-6+(-6)==-12;扩展资料:先计算a*a=9,此时a=3,没变。a的最终值为-12。a的最终值为-12。#include<stdio.h>intmain(){inta,min,max,mid;/*定义变量*/scanf("%d%d%d"&a,&b,&c);/*读取输入变量*/min=a<b&&a<a:(b<b:c);/*取最小值.a<b&&a<a:(b<b:c);是c语言中唯一的三目运算的两次叠加.最外层确定是否a是最小值.是则min=a;否则运算b<b:c表达式.表达式表示取bc中的最小值.下同*/max=a>b&&a>a:(b>b:c);mid=a+b+c-min-max;printf("mintomax:%d%d%d "min,mid,max);return0;}。
2023-12-01 14:15:3615

如果 int a=10,表达式:a+=a-=a*a的值怎么算?

分两步算;a-=a*a;这时候a=-90;第二步a+=a;a=-180;
2023-12-01 14:16:503

C语言a+=a-=a*a怎么看!!!!

从右往左看首先a=3那么a*a就等于9,然后是a=a-a*a这时前面a=3,而后面的是9;所以这时a就等于-6;最前面的a+=a-,就等于-6+-6所以最后的结果是-12;这和运算应从右向左运算!
2023-12-01 14:16:594

C语言中a+=a-=a*=a答案是多少?

a初值为12时,a+=a-=a*=a结果为0步骤:这个表达式的运算是从右向左的:1. a*=a:a=a*a=12*12=1442. a-=144: a=a-144=144-144=03. a+=0: a=a+0=0+0=0。
2023-12-01 14:17:0914

赋值表达式:a+=a-=a*=a; 设a=12,请问它的计算过程是什么?

a += a -= a *= a;这是一个赋值表达式它包含复合的赋值运算符;由于赋值运算符结合方向是 "自由至左" 因为a的初值为12,此赋值表达式的求解步骤如下: S1:先进行"a *= a"的运算,它相当于a = a * a,a的值为12*12=144; S2:再进行"a -= 144"的运算,相当于a = a - 144,a的值为144-144=0; S3:最后进行"a += 0"的运算,相当于a = a + 0, a的值为0+0=0; 所以此表达式结果为0
2023-12-01 14:17:455

c语言中a+=a-=a*=a这个表达式的算法是怎么算的

a的初值呢?a初值为12时,a+=a-=a*=a结果为0步骤:这个表达式的运算是从右向左的:1.a*=a:a=a*a=12*12=1442.a-=144:a=a-144=144-144=03.a+=0:a=a+0=0+0=0
2023-12-01 14:18:031

若a是int型变量,且a的初值为5,则计算a+=a-=a*a,表达式后a的值为:

感觉是-40吧,先运算a*a=25(注意:此时a的值并未变化),第二步算a-=25,即a=a-25,a=-20,再运算a+=a(此时a=-20),所以结果是-40。
2023-12-01 14:18:123

求C语言大神,int a=4,a+=a-=a*a后,a=?

-24a+=a-=a*a 先算 a-=a*a,相当于a=a-a*a=4-4*4=-12 这一步算完a=-12然后算 a+=-12,相当于a=a+(-12)=-24
2023-12-01 14:18:227

a=3,a+=a-=a*a的值是多少 怎么算的

先给a赋值为3,然后从最右边算起先算a*a = 9然后 a-=9 a=3-9=-6然后 a+=-6 a=-6+(-6)=-12
2023-12-01 14:18:442

首先a赋值为2;然后计算a*=3,此时a为6;然后计算a-=6,此时a为0;然后计算a*=0,此时a为0;然后计算a+=0,此时a为0。最后输出a为0。另外,只有C语言的考试会编这样晦涩难懂易出错的语句,实际工作应用中请不要这么做。
2023-12-01 14:19:051

C语言表达式a+=a-=a*=a结果是多少?运算顺序是怎样的?(a=12)

赋值运算符优先级最低,所以计算方式是由右向左,首先是a*=a=12*12=144,算出的结果再计算a=a-144=-132,然后再计算a=a+(-132)=-120;不明白继续追问!
2023-12-01 14:19:142

C语言。 a_=a+=a*a计算的顺序是啥,就设 int a=3;吧

inta=3;a-=a+=a*a;这样看:a-=(a+=a*a);先计算括号中,此时a=3;即:a(=3)+=3*3,括号中的结果为12,也就是说此时a=12,再计算a-=a;12-12=0;最终a=0这种题目了解就好,没必要深究,现实编程中根本不会用到这样的代码。可读性太差了
2023-12-01 14:19:351

C语言表达式a+=a-=a*=a结果是多少?运算顺序是怎样的?(a=12)

从右向左算首先a的值是12第一步:计算a*=aa=a*a=144第二步:计算a-=144a=a-144=0第三步:计算a+=0a=a+0=0
2023-12-01 14:19:501

C++中 int a=12;a+=a-=a*=a怎么计算

从右向左,a*=a是144,a-=a 就是144-144为0,最后a+=a 就是0了我室友说的
2023-12-01 14:19:583

C语言:a=3,a+=a-=a*a,求a

a最后的值为-12a+=a-=a*a的计算顺序为先计算a*a结果为9然后计算a-=a*a也就是a-=9这是一个符合赋值表达式相当于a=a-9,a的值变成-6,同时表达式的返回值为-6然后计算a+=(a-=a*a)也就是a+=-6即a=a+-6a的值为-12
2023-12-01 14:20:201

c语言 设a=14则经过表达式“a+=a-=a*=a”后a的值为 答案是0 求解释 怎么算出来的?

首先要明白运算符优先级的概念,‘+=“,“--=",‘*="这些优先级都是相同的所以直接从左至右读;a+=a得到a变为28;a-=a得到a变为0;a*=a得到a还是0;所以答案为0;
2023-12-01 14:20:303

若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后a的值为

a=-12。按照从左至右结合性和优先级顺序,先计算a-=a*a,最后a结果为a=a-a*a,a=3-3*3=-6;再计算a+=-6,因为此时a的值已经变成了-6,所以计算过程是a=a+(-6)=-6-6=-12。优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。扩展资料:C语言中各运算符的结合性分为两种:左结合性和右结合性。例如:算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。参考资料:百度百科-运算符
2023-12-01 14:20:384

关于a+=a-=a*=a的计算顺序。。

赋值运算符和复合赋值运算符是从右边开始的,比如,a = b + c中,先求出b、c的和,然后赋给a。所以 a += a -= a *= a 的运算顺序是a * a → aa - a → aa + a → a
2023-12-01 14:21:045

c语言中,已知a=12,则表达式a+=a-=a*=a的结果是什么,求步骤

从右向左算首先a的值是12第一步:计算a*=aa=a*a=144第二步:计算a-=144a=a-144=0第三步:计算a+=0a=a+0=0
2023-12-01 14:21:334

c语言中int a=5怎么计算 a+=a-=a*a 要带个解释…

-40。a+=a-=a*a→a+=a-=25→a+=-20→-40。
2023-12-01 14:21:451

关于C 语言中运算问题 a=12 a+=a-=a*=a 怎么计算的 要过程 谢谢

最终答案为0啊,首先是从右往左计算。a*=a就是a=a*a=12x12=144;此时a的值为144.a-=a*=a就是a=a-144=144-144=0.此时a的值为0.那么后面的计算就无意义了。
2023-12-01 14:21:541

C语言中赋值计算的问题:定义int a=10,则表达式a+=a-=a*=a的值是多少?怎么算出来的?

a+=a-=a*=a展开后应该为:a=a+a=a-a=a*a;首先计算a=a*a,结果a=100,接着计算a=a-a,结果a=0,再计算a=a+a,结果还是0。OK,就是这样计算的。
2023-12-01 14:22:065

设有语句int a=3,执行语句a+=a-=a*a后,变量a的值是多少啊?

执行该语句的结果为-12,没有错误。注意赋值运算符的顺序为自右到左。计算过程如下:首先执行a*a=9,然后a-=9=(a=a-9)=-6,执行后a=-6,然后执行a+=a=(a=a+a)=-12。所以说正确答案是-12。扩展资料:C语言主要特点C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型。简洁的语言C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。具有结构化的控制语句C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、ifu22efelse语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。丰富的数据类型C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。丰富的运算符C语言包含34个运算符,它将赋值、括号等均是作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。条件运算符这是一个三目运算符,用于条件求值(?:)。逗号运算符用于把若干表达式组合成一个表达式(,)。指针运算符用于取内容(*)和取地址(&)二种运算。求字节数运算符用于计算数据类型所占的字节数(sizeof)。C语言运算符号指的是运算符号。C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。参考资料来源:百度百科-C语言的赋值运算符参考资料来源:百度百科-C语言
2023-12-01 14:22:289

C语言运算:设a=10,求a+=a-=a*a的输出值,写出运算过程

两个计算过程:a-=a*a; //a=a-a*a = 10-10*10 = -90a+= a; //a=a+a = -90 + -90 = -180最后结果是-180;
2023-12-01 14:23:102

C语言 a=10 , a+=a-=a*=a

a=10,a+=a-=a*=a结0给写等价式inta=10;a+=a-=a*=a等价于a=a+(a=a-(a=a*a)).首先,计算a=a*a=10*10=100;a=100执行a=(a-(a=a*a)),相于执行a=a-a=100-100,a0执行a=a+(a=a-(a=a*a)),相于执行a=a+a=0+0=0
2023-12-01 14:23:201

朋友们帮忙算一个c语言的题,a+=a-=a*=a,初值为12,帮忙算一下答案

这是个赋值表达式,c语言中赋值语句按照“自右至左”的结合顺序。(1)先进行“a-=a*a”的运算,它相当于a=a-a*a,a的值为15-225=-210。(2)再进行“a+=-210”的运算,相当于“a=a+(-210)”,a的值为-210-210=-420。希望对你有帮助。
2023-12-01 14:23:291

a=12 a+=a-=a*=a 求运算结果

不用想,肯定是0这是从右往左的算法,a*=a就相当于a=a*a,以此类推首先a*=a得到a=144然后a-=a,得到a=0;最后a+=a,得到a=0懂了吧
2023-12-01 14:23:402

int a=12,a+=a-=a*=a的值

inta=12,a+=a-=a*=a这个其实是错误的,按照这样那么对a初始化的部分是a+=a-=a*=a,但是a没有初始化,所以矛盾了,应该这样的吧;inta=12;a+=a-=a*=a;那么a为0a+=a-=a*=a可以一步步的分解先算a*=a->a=a*aa=12*12=144再算:a-=a*=a,相当于a-=144->a=a-144,a=0再算a+=a-=a*=a,a+=0a=0a+=a-=a*=a就是赋值表达式,从右向左一步步算就好了
2023-12-01 14:23:492

a+=a-=a*a怎么算?

a+=a-=a*a是一个连续赋值运算,计算顺序是自右至左的。如果int a=2。a+=a-=a*a。相当于:1.a-=a*a。2.a+=a。然后相当于:1.a=a-a*a。2.a=a+a。由于a初始化为2:1.a=a-a*a=2-2*2=-2。2.a=a+a=-2+(-2)==-4。所以最后结果就是-4。相关内容解释:C语言中提供常用赋值运算符:等号运算符。1.计算赋值运算符右侧表达式的值。(“=”为赋值运算符)。2.将赋值运算符右侧表达式的值赋给左侧的变量。3.将赋值运算符左侧的变量的值作为表达式的值。赋值表达式是类似这样的句子:a=5 注意后边没有分号, a=5; 这就是一个赋值语句了。赋值表达式的结果是最左边的赋值运算符(最左边的等号)左边的变量(或者表达式)的值。赋值运算符的优先级和结合性:1.优先级较低,只比逗号运算符高。2.从右向左结合。例如:x=y=3 就相当于 x=(y=3) 结果都为3。
2023-12-01 14:24:081

c语言中a+=a-=a*a如何计算

a+=a-=a*a;为连续赋值运算,从右向左计算。于是原始的表达式等效于:a-=a*a;a+=a;也就是a=a-a*a;a=a+a;例如,a=5;那么a=a-a*a=5-5*5=-20;a=a+a=-20 + (-20) = -40;最终a为-40,表达式整体值也就是a最终值,一样是-40。
2023-12-01 14:24:249

算式a+=a-=a*a++的计算过程

条件是:int a@6; 算式是a,@a/@a+aU0001f522计算a*a首先根据算式的符号优先等级来看应该先计算a++,所以当计算a*a的时候,a=7,所以a*a=49。U0001f522计算a-=49之后计算a-=49,即a=-42。U0001f522计算a+=a最后计算a+=a,当前的a已经是-42,所以答案是a=-84。
2023-12-01 14:25:011

int a=8; a+=a-=a*a; 咋算?

拆开来算,运算是从右到左读的显示a*a,但是不赋值,结果64然后a-=(第一步的结果)即a=a-(第一步的结果),a=8-64=56最后a+=(第二步的结果)即a=a+(第二步的结果),因为第二步有进行复制,所以a=(-56)+(-56)=-112
2023-12-01 14:25:513

a+=a-=a=a*a是什么意思,求c语言大神解释一下

实际上是赋值复合运算. a是初始赋值,但是也是变量 从右往左做赋值运算 a(被赋值)=a*a(初始值) a(再次被赋值)=a(初始值)-a(上一赋值) a(最后被赋值)=a(初始值)+a(上一赋值)
2023-12-01 14:25:571

执行下列语句int a=8; a+=a-=a*a; 后,a的值是—————— 求执行 详细 步骤

a+=a-=a*a //先算a*aa+=a-=64 //算a-=64,即a=a-64=8-64=-56a+=-56 a=a+(-56)=(-56)+(-56)=-112
2023-12-01 14:26:076

在C语言中,设 int a=10,则执行完语句 a+=a-=a*a后,a的值是( ) 求过程

-80a+=a-=a*a;a-=a*a的值为-90;a+=a-=a*a的值为-180;a=-90+-90=-180。扩展资料在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1];在之前的微型机中,int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1];使用printf输出int占用字节数量:printf("%d",sizeof(int));除了int类型之外,还有short、long、long long类型可以表示整数。unsigned int 表示无符号整数,数据范围为[0~2^32-1]。
2023-12-01 14:26:256

若a是int型变量,且a的初值为5,则计算a+=a-=a*a,表达式后a的值为:

a=-40因为+=和-=优先级一样,结合方向为右到左,所以a+=a-=a*a等价于a+=(a-=(a*a))即a=a-a*a=5-5*5=-20a=a+a=-20-20=-40
2023-12-01 14:26:513

C语言,设a=12,且a为整型,执行语句a+=a-=a*=a;后,a的值为多少?!求解释

a的值为0;c里的赋值运算的从右往左的,先执行a*=a;得到a=144;然后a-=a,得到a=0;最后a+=a,所以就是0了。
2023-12-01 14:27:002

c语言中,已知a=12,则表达式a+=a-=a*=a的结果是什么,求步骤

从右向左算首先a的值是12第一步:计算a*=aa=a*a=144第二步:计算a-=144a=a-144=0第三步:计算a+=0a=a+0=0
2023-12-01 14:27:271

a+=a-=a*=a a=12 答案是什么呀>?

方向从右至左一点一点算就知道结果应该是0了算a*=a 得出a=12*12=144 ,此时a已经等于144 算a-=a 得出a=144-144=0,此时a已经等于0 算a+=a得出 a=0+0=0
2023-12-01 14:27:3710

a是int型变量,而且a的初值为6则计算表达式a+=a-=a*a后a的值为

先计算a-=a*a=6*6=36a=6-36=-30然后a+=a=-30a=-30 + -30=-60
2023-12-01 14:28:081

猜你想看