若int a=4;则执行语句a+=a- =a+4后变量a的值是什么,答案是-8,a+,a-是什么,

宛如香水2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
slj0806 共回答了16个问题 | 采纳率81.3%
这是一个复合的结构 =是一个赋值运算符 具有自右向左性 所以应该从右往左看 先举个例 a+=1的意思是 a=a+1;所以a-=a+4就是a=a-(a+4),这个运算完之后a=-4;然后a+=a就是a=a+a,就是a=-4+(-4)=8;希望能帮到你啊
1年前

相关推荐

C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B
C语言中有一道题目:已知"int a=4,b=5,c;",则执行表达式"c=a=a>b后变量a的值为( ) A 0 B 1 C 4 D 5
本人新手,求高手,不会的酒别来迷糊我了,谢谢
Melody_ryu1年前1
水是凝固的水 共回答了14个问题 | 采纳率100%
这个涉及到C语言的单目运算符优先级与结合性的知识:
优先级:
在表达式中,优先级较高的先于优先级较低的进行运算.而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理.
结合性:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算.这种自左至右的结合 方向就称为“左结合性”.而自右至左的结合方向称为“右结合性”.
在你的问题中,"="在表达式中是赋值运算符,而在C语言中,赋值运算符是典型的右结合性运算符.如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算.
所以,本例就是先计算双目运算符“>”:a>b,因为a=4,b=5,a是小于b的,所以式子计算就变成了c = a = 0,然后再计算a = 0(即a = (a > b)),最后式子就是c = 0, 所以答案选A
具体运算符优先级和结核性请参考:
http://wenku.baidu.com/view/044cc58a6529647d27285242.html
若定义int a=4,b;则下面表达式的值是().(b=6*5,a*4),a+16 麻烦详细说明,
最铁的蛋1年前1
吃苹果的蝴蝶 共回答了15个问题 | 采纳率86.7%
=16
b=30.b=a*4=4*4=16.再求解3式,结果=4+16=20
若有以下定义和语句 int a=4,b=3,*p,*q,*w; p=&a;q=&b;w=q;q=NULL; 则以下错误的
若有以下定义和语句 int a=4,b=3,*p,*q,*w; p=&a;q=&b;w=q;q=NULL; 则以下错误的语句是 *
A *q=0; B w=p; C *P=a; D *p=*w
yf我心ll1年前1
xueyou2000 共回答了20个问题 | 采纳率85%
这里的“错误”是指语法上的错误.*q=0;程序会crash.其他都是合法的赋值语句.(不是相等哦).
c语言的题目哦30.设有声明“int a=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个
c语言的题目哦
30.设有声明“int a=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是___c__(30)_____。
A. if(a>b)c=a,a=b,b=c;
B. if(a>b)c=a;a=b;b=c;
C. if(a>b){c=a,a=b,b=c;}
D. if(a>b){c=a;a=b;b=c;}
求详细解答。这里面区别在哪里?
5u543c1年前1
lzw_1228 共回答了16个问题 | 采纳率87.5%
答案B
很容易理解嘛
注意一下标点哦
A if(a>b)c=a,a=b,b=c;
注意是逗号哦
所以等效于
if(a>b){c=a,a=b,b=c;}
和C D等效的
但是B,注意中间是分号
所以等效于
if(a>b)
{c=a;}
a=b;b=c;
也就是说,无论a是否大于b
a=b;b=c;
这两句必然会被执行
#define add(x) x*x main(){int a=4,b=6,c=7,d=add(a+b)*c;print
#define add(x) x*x main(){int a=4,b=6,c=7,d=add(a+b)*c;printf("d=%dn",d);}怎样分析?
sohyoh1年前1
-痛并快乐着 共回答了14个问题 | 采纳率85.7%
#define宏是直接替换,不会先给你计算的
add(a+b) = a+b*a+b
d = add(a+b)*c = a+b*a+b*c =4+4*6+6*7 = 4+24+42 = 70
都是直接替换,不要自己加一些没有的字符.
int a=4,b=5,c=0,d; d=!a&&!b‖!c 这道题怎么算的
int a=4,b=5,c=0,d; d=!a&&!b‖!c 这道题怎么算的
我却算得1,不是先算!a=0 b=0 c=1 然后算0&&0=0 0‖1=1么?
麒麟娃1年前1
公共ee 共回答了14个问题 | 采纳率92.9%
!a = 0;
当&&左边为假时编译器自动停止后面的运算
因为&&(逻辑与运算)左右两边有一个为家则结果为假(一假则假).