若有定义int a=2,则语句printf是c语句吗(“%d”,a++);的输出结果为2,为什么不是3

若有int a,b;则语句:printf( %d ,(a=2)&&(b=-2);的输出结果_百度知道
若有int a,b;则语句:printf( %d ,(a=2)&&(b=-2);的输出结果
详细步骤,谢谢
提问者采纳
2&&(-2)为真(也就是1),赋值语句b=-2的返回值为-2,(a=2)&&(b=-2)赋值语句的返回值就等于右值(也就是所赋的值)所以对于(a=2)&&(b=-2)来说,所以(a=2)&&(b=-2)的值为1所以printf( %d ,赋值语句a=2的返回值为2
提问者评价
其他类似问题
为您推荐:
其他3条回答
为1中间是个逻辑运算符a=2为赋值语句且没有赋0,值为真1b=-2也是赋值语句,并且也没赋0,值也为真1所以1&&1==1
其实就是&&号的右边是0,答案也是1这是由于&&运算符的短路特性引起的在逻辑运算中 0代表假,非零代表真
首先说明应该是“%d”,少了个括号。(a=2)&&(b=-2)是个逻辑运算,先将a赋值2,b赋值-2,因为都不等于0,所以该逻辑运算的结果是真,在C语言中,真的数值是1。所以最后答案为1。
您可能关注的推广
printf的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1.int a=9,则表达式(++a*2/3)的值是? 2.若变量a是int型,则执行语句&a='A'+1.6;&后,正确的叙述是()_百度知道
1.int a=9,则表达式(++a*2/3)的值是? 2.若变量a是int型,则执行语句&a='A'+1.6;&后,正确的叙述是()
A.a的值是字符C
B.a的值是实型66.6C.不允许字符型和浮点型想加
D憨埂封忌莩涣凤惟脯隶.a的值是字符B亲,麻烦把理由啥的讲详细点啊,因为实在不会
1.int a=9,则表达式(++a*2/3)的值是? 6 先运算自加,a=10,10*2/3=6(/得到的只能是整数) 2Cint型不能憨埂封忌莩涣凤惟脯隶是带小数点(末位舍去)int型要是字符型(char)就是输出B了
其他类似问题
为您推荐:
其他7条回答
1. 来看第一个问题。++a是a的前自增操作,而++的优先级是优先于*和/的。所以++a*2/3这个表达式等价于( (++a) * 2 ) / 3。由于a = 9,则表达式++a的值为10,所以++a*2/3表达式的值为10*2/3=20/3=6。注意这里的取整操作,int值之间相除的值取整,丢弃小数。2. 再看第二个问题。'A'+1.6这个表达式,编译器会对'A'进行隐式类型转憨埂封忌莩涣凤惟脯隶换为double类型,为什么呢?因为编译器为了防止精度损失,对于+号运算,总是将精度低的转换为精度高的。同时1.6是个double类型的常数,所以'A'+1.6的值是66.6。同时由于a是int型,所以把表达式取整,故a = 66。对应字符B。所以该题答案是D。有些都忘了,这些细节也记的不太清楚,如果错了,请见谅。
来自:求助得到的回答
#include &stdio.h&int main(void) { int a = 9, //暂第二个b当成a来看printf(&++a*2/3 = %d\n&, ++a*2/3); ++a为前自增,(9+1)*2/3除的结果只取整数位,不计余b = 'A' +1.6; //因为b是整型,A的ASCII码为65,+1.6转成值为66.6,自动转成整型就是66printf(&b= %d\n&, b);/*执行结果为:---------------------++a*2/3 = 6b= 66---------------------*/
1.答案是6.自加的运算级高于四则运算,所以运算顺序是从左到右!可得结果;2.如果是以字符型输出,则答案是D。66对应的是字符B,是强制转换的内容
第一题:先执行a的自加,10*2得20,20/3得6;第二题:'A'的ascii值时65,加上1.6后得66.6,但是这个值是赋值给int类型的a。所以就把屁股后面的.6切割掉了。C/C++是强类型语言,左值的类型说了算!
++((a*2)/3)=7B 该题考的是数据类型转换,分为两种:隐式转换,强制转换。该题为隐式转换
++运算优先级高于*/,a++和++a对于a的值都是加一,但是他们的区别在于表达式(a++或者++a)的值不同,对于a=9,a++是9,++a是10;第二个忘记了,感觉在程序环境下运行一下就知道结果了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果_百度知道
如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果
提问者采纳
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
printf的相关知识
其他3条回答
!!不好意思,很长时间没看了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?谢谢_百度知道
若int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?谢谢
提问者采纳
p[0]的类型为指向int类型的变量,&a[1][2]的类型就是指向int类型变量的const指针所以p[0]=&a[1][2]是在把一个指向int变量的const指针赋值给int类型的指针变量.a是一个数组,a[1][2]的类型是int变量,数组的元素是含3个int类型元素的数组;则p是一个数组;int a[2][3],该指针指向int类型的变量所以p[0]即 *(p + 0)是数组p的第0个元素.在C语言中,这是合法的.不只是谁告诉楼主这个赋值语句不对,数组元素是指针.所以a[1]是数组的第一个元素,a[1][2]是a[1]的第2个元素,a[1]的类型为含3个int类型元素的数组int *p[3]
提问者评价
非常感谢,我看一本旧教材上写的……
其他类似问题
为您推荐:
赋值语句的相关知识
其他2条回答
;没,可以的;%d\n&quot,*p[0])我试过。可能是你的软件不给a[2][3]初始化吧。你试过printf(&quot
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1.已知int a=1,b=2,c=3,d=4,m=2,n=2;,则执行m=a&b || n=c&d;后,n的值为_______._百度知道
1.已知int a=1,b=2,c=3,d=4,m=2,n=2;,则执行m=a&b || n=c&d;后,n的值为_______.
b=2*c.. 7 3C;b)
a=b+c.;if(a&gt,b=4.下列程序段输出的结果是______.. 0B;%d %d&quot.,y;.;printf(&else
a=b-c,变量x的值是______;,x=y==z..;A. 7求大神指教正确答案原因.我真的是电脑小白,b=3*c.. 1 9D.. 6D;a=b+c. 9 6B. 1C,z。A;后,执行语句y=z=x,a.已知int x=6. 4 23,b),c=3。int a=52
.。?第三题全是等号为什么答案是1呀,那答案不应该是a=4+3=7..;b不是执行a=b+c...。第一题答案为啥是二呀.。..,b=2*3=6吗.,b=2*c吗(⊙o⊙)…可能是我没表达清楚.还有第二题a&gt..为什么还能计算.它不只是个或者的意思吗
提问者采纳
c=3,相等为1,此时a=b+c=4+3=7;这一句先判断Y==z,这一句效果是y=z=x=6x=y==z;if(a&判断成立,b=62)y=z=x;判断不成立,b
a=6+3=9输出a,不执行a=b+c;b)
a=b+c,b=3*c;b=2*c=2*3=6else
a=b-c,b=2*c,b=4,Bint a=5A
提问者评价
灰常感谢!我懂了
其他类似问题
能你之前修改过些什么没重新编译吧。我把你的程序专门用tc2试了下;buildall再运行一次试试吧,菜单栏compile-&gt
(⊙o⊙)…可能是我没表达清楚。。。第一题答案为啥是二呀..它不只是个或者的意思吗...为什么还能计算.....还有第二题a&b不是执行a=b+c,b=2*c吗,那答案不应该是a=4+3=7,b=2*3=6吗?第三题全是等号为什么答案是1呀......
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 printf unsigned int 的文章

 

随机推荐