已知int a=12;,则执行a=a>>3;后a的值为 已知int a=6; 则执行a+=a-=a*a;语句后,a的...
右移运算>>是一种二进制运算,是以二进制位为单位的位移运算,移出的位被舍弃,左边补0
12D=1100B,右移1位=0110B,右移2位=0011B,右移3位=0001B
因此12D>>3=0001B=1D
执行a=a>>3;后a的值为1
这是C语言的位运算。他的操作是把a的二进制值向右移动三位,也就是说,把他的二进制的最低三位去掉就可以了。a等于12,他的二进制形式就是1100,去掉最右边的3位,也就是剩下1。也就是说,这时a的值就是1。
这个题目的做法也可以不直接换算到二进制,而是用a的值除以2的3次方(右移k就是除以2的k次方,左移k就是乘以2的k次方),取整数商的方法来得到答案。12/8=1
答案是完全一样的。
a+=a-=a+a,运算符和结合性,由运算符优先级,+优先级为4,-=和+=优先级为14,+结合方向从左至右,+=和-+从右至左, 所以: 先计算 (a+a),a=12,a+a=12+12=24 再计算 a-=(a+a),即a=a-(a+a)=12-24=-12, 最后计算 a+=a, 即a=a+a=-12+(-12)=-24
>>是位运算,你去了解下计算方法,答案应该为1
+=和-=的优先级是一样的,是从右到左关联的,计算过程:
a+=a-=144
a+=12-144=-132
a=-132+(-132)=-264
若有定义语句int a=12,则执行表达式a+=a-=a+a后a的值为________。~
若有定义语句int a=12,则执行表达式a+=a-=a+a后a的值为-24。
计算过程:
a+=a-=a+a,运算符和结合性,由运算符优先级,+优先级为4,-=和+=优先级为14,+结合方向从左至右,+=和-+从右至左。
所以:
先计算 (a+a),a=12,a+a=12+12=24,
再计算 a-=(a+a),即a=a-(a+a)=12-24=-12,
最后计算 a+=a, 即a=a+a=-12+(-12)=-24。
答案是:-60
a+=a-=a*a 语句可以拆分为如下一些语句:
a-=a*a;等价于 a = a-a*a;
a+=a;
第一句:a = a-a*a=6-6*6=-30;
第二句:a+=a; a=a+a=-30+(-30)=-60.
#扈惠胀# int a=12 a=a&052;printf("%d",a)输出结果是什么??求过程 -
(13584219887): a=12,12的二进制位为1100;0开头的数表示8进制数,故052的二进制为101010.&表示按位与,只有两数对应的位都为1才为1,否则为0.12和052的按位与为: 001100& 101010-------------- 001000 结果为2进制的1000,换算为10进制就是8,故输出为8.
#扈惠胀# 执行语句"int a=12;a+=a - =a*a;"后a的值是多少,为什么 -
(13584219887): 结果是-264,此题是右结合,开始是a*a,即为144,第二步,a-=144,所以,a=a-144=12-144=-132,第三步,a+=-132,即为:a=-132+(-132)=-264
#扈惠胀# C语言:int a=12; a+=a - =a*a 执行后..得到多少???... -
(13584219887): a+=a-=a*a 应该是先算a*a,得到144, 再算a-=144,得到-132, 再算a+=-132,得到-264 后面这个得到的是0, 计算过程是: 先算m1==m2,得到0 再算0=f1,得到0 后面的不算了 楼上的错了!~~~因为由于楼主的失误 那里应该是== 而不是= 在printf这里用=是错误的 只能是==所以楼上错了
#扈惠胀# int a=12,则表达式a+=a - =a*a的值是多少? -
(13584219887): 输出结果是-264,这个式子等价于(a+=(a-=(a*a))), 先a*a=12*12=144; 再a-=144,等价于a=a-144,这时结果为-132; 最后再a+=-132,a=a+(-132),最后结果为a=12-132=-164;
#扈惠胀# 执行下列程序段后,a的值为 - int a=12, *p; p=a; a=*p+5; - 上学吧普...
(13584219887): a=a/(a+a)
#扈惠胀# c语言问题:int a=12;a=a&052;printf(“%d\n”,a);详细过程 -
(13584219887): 这样将a写成2进制001100; 因为3位2进制表示一位8进制,于是052表示2进制为101010;然后在与操作 其中0和1为0,0和0为0,1和1为1,因此答案是001000;转换为10进制为8
#扈惠胀# 若定义int a=12;则表达式a+=a - =a/=a的值是? -
(13584219887): 结果是0 右结合性,首先计算a/=a,得到a=1,然后计算a-=a,得到a=0,最后计算a+=a,得到0