问一下C语言中的a+=3为什么等价于a=a+3啊,我知道前面是简写,不知道为什么要这样简写

作者&投稿:平实 (若有异议请与网页底部的电邮联系)
为什么a*=3等价于a=a+3而不是a=a*3呢?(c语言问题)~

因为逗号表达式的优先级比赋值表达式还低,因此先计算a=3*5,a的值为15,然后计算a*4的值作为括号里的整个逗号表达式的值(这个过程中a的值不变),最后计算括号中的a+5的值,得20

‘+=’的符号定义就是这样啊。 就跟‘+’表示两个数的和是一样的。

不是简写,+= 和=都是运算符号。
只不过a+=3和a=a+3的运算结果都是一样的。
都是取a的值与3相加,再将结果赋值给a。

不能理解为简写;;;;;; 首先赋值号'='在所有运算符中的优先级中是最低的; 如果和赋值号一起那么就是说明他是次低的; 比如; int i = 2; 那么 i *= 3+2是10; 如果理解为简写, 应该为 i = 2*3+2那么结果应该为8; 所以不能理解为简写; 可以理解为弱化运算符的优先级; 当与赋值号一起那么这个运算符会被弱化了(只比赋值号高一点点);

应该是特有的约定,可以这样简写,如果不习惯不简写也可以。
类似的还有a++;等,有a++; a--;这样的简写,因此这个语言被命名为C++

C语言就是这样设计和定义的,就是为了书写简便

规定啊,+=,-=,*=,/=,%=,++,--这都是运算赋值的简写


在C语言的文件中,像r,w,a,r+,w+,a+分别是什么意思,前面三者与后面三者...
用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。若要向一个已存在的文件追加新的信息,用“a”方式打开文件。如果指定文件不存在则尝试创建该文件。以上内容参考:百度百科-c语言fopen函数 ...

!a在c语言中是什么意思?
!表示“非”,是一种逻辑运算。若a的真值为1,则!a为0;若a的真值为0,则!a为1。取反,是Java与C\/C++使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

c语言中, a[2][2]=什么意思
a[2][2]=6。在c语言中,a[常量1][常量2]={数据1、数据2、...},常量1可以没有,但是常量2必须有。在编译器进行编译时,会有这两种情况,下面分别说明。1、若指定了 常量1、常量2的值,为了方便说明,先假设常量1=2、常量2=2,那么a[0]={数据1、数据2},a[1]={数据3、数据4}。

C语言中\\a是什么意思,有什么作用
c语言中的转义字符:\\a 响铃符 通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号('),用于表示字符串常量的双撇号(")和反斜杠(\\)等。实例:通过puts可以输出字符串,例如:"123abc" 对应的ASCII码值的八进制分别是 61、62、63、141、142...

c语言中 char a; 请问 a与’a’有啥区别 ’a’是a的ascll码?是个数字...
你想问是char a='a';这两个a的区别。首先第一个a是变量名,没有ascll码值,只是一个申明,存放‘a’的内存地址。而‘a’是一个字符,对应的ascll是97。

c语言 a<<=1与a<<1有什么区别?
c语言 a<<=1与a<<1的区别:1、运算符号的含义不同 <<=是左移赋值运算符,a<<=b是把a的二进制数左移b位,然后把结果赋值给a;<<是左移运算符,a<<b是把a的二进制数左移b位。2、运算结果不同 a<<=1表示把左边运算数a的二进制数进行左移1位运算,然后把计算的结果赋值给a,会改变a...

C语言问题 ,谁能帮我解释一下A B C D各代表什么意思???
rb+ 读写打开一个二进制文件,允许读数据。rt+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式...

C语言中"a"为什么不属于字符型常量呢?有高手为我详细讲解一下switch语句...
switch是按照顺序从上往下执行的语句:先是你给a付一个值:如果你输入1,程序会从case1开始配对,如果a是1,则执行case1里面的命令,顺序执行下来,输出‘你输入的是1!’,然后遇到break把switch语句终止,该程序结束;如果你输入2,程序会从case1开始配对,如果a是1,则执行case1里面的命令,顺序...

C语言变量中int=a a属于什么
a ,你不爱叫a,可以叫b,可以叫c,可以叫你想要的任意名字,只要符合规则就行。这就是一个定义变量的过程。int a=3; 可以看做是上述的一种”进阶版“:我搞了一个变量之后,立马给它放一个数,此时我就放个3。即赋初值。可以这么理解,a 就是个放数据的容器,只能放int型的数据 ...

c语言中~a什么意思
!表示“非”,是一种逻辑运算。若a的真值为1,则!a为0;若a的真值为0,则!a为1。

临高县13457646652: C语言中 a=b==c怎么理解 -
百李氟芬: “=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符; =赋值==等于运算说a=b=c,表达式运行a值赋给b、c运行完abc值相等; a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值; 运算b==c,若b...

临高县13457646652: C语言中赋值运算符的问题! -
百李氟芬: 为了简洁,C语言提供了一种压缩方式的运算符,这种运算符实际上是算术算符与赋值算符的合成或简化,称为自反运算赋值运算符.-=(自反减赋值) *=(自反乘赋值) /=(自反除赋值)%=(自反模赋值)+=(自反加赋值)都是按你写的模式进行简化的.

临高县13457646652: 为什么a*=3等价于a=a+3而不是a=a*3呢?(c语言问题) -
百李氟芬: 这是谁告诉你的呀?a+=3a=a+3 a*=3a=a*3

临高县13457646652: C语言问题:为什么a+=5等价于a=a+5? -
百李氟芬: 是多数编程语言中的一种运算符规则:a += b 等价于 a = a+b;a -= b 等价于 a = a-b;a *= b 等价于 a = a*b;a /= b 等价于 a = a/b;纯视频网站可能不多,学C编程或其他语言的网站很多,例如CSDN

临高县13457646652: C语言中,a+b==c - 3是表示? -
百李氟芬: 这句C语言表达式意思是:判断a+b的值是否与c-3的值相等,a,b,c可以是常量,也可以是变量.

临高县13457646652: C语言在怎么理解加减乘除的运算规则a=b=3,c=5;s2=a++*a+b+c*a*++b/4;实际运行结果s2是27为什么不是28? -
百李氟芬: a++ 执行完这个以后 a的值变为4 a++*a=3*4=12 c*a*++b/4=5*4*4/4=20 所以 12+2+20=34 你是不是把程序打错了吧 s2=a*a+b+c*a*++b/4=3*3+3+5*3*4/4=27

临高县13457646652: C语言中:a+++b是什么意思? -
百李氟芬: 就近原则,与编译器无关. 要说在c语言中这充其量只能算作是“伪代码”. 在vb、pascal等程序设计语言中,<>是“不等于”的意思. 在c中,“不等于”的关系应表示为“!=” if(a != b+c) printf("a不等于b+c\n"); else printf("a等于b+c\n")...

临高县13457646652: C语言: 有以下声明: int a[5]; 为何语句:a++;是非法的,而语句:*(a+3)是合法的? -
百李氟芬: 这是指针里面的内容,a表示的是数组的首地址,注意它是固定不变的,就像一个常量一样,不能改变.而*(a+3)表示的是数组里第四个数,*a是第一个数,*(a+1)是第二个,这是数组特有的,因为数组在内存里是顺序存放的,所以加1就表示下一个数的地址,再加*,就表示是那个数了.具体可以参考c语言指针的书,这个是很基本的

临高县13457646652: c++语言中a=a++ - 3是什么意思啊 -
百李氟芬: 理解这个语句需要明白运算的优先级和结合性.这里是a++,不是++a,所以a先减3,然后再自增1,最后赋值给a.这句实际等价于 a = a - 3 + 1

临高县13457646652: c语言中这样的一题目 int a=2; a+=a*=a - =a*=3; -
百李氟芬: *的优先级比+=和-=高,所以先算a*a=3*3=9.+=和-=是同级的,但是右结合的,所以先算a-=9,结果a为3-9=-6.最后算a+=(-6)=(-6)+(-6)=-12.不过a*a后少了个分号,严格说就是错误语句,连编译都过不了的!

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