
if(a>10 && ok1) | a=10,所以 a>10 不成立,BTW,这个地方 if else 之间 什么都没有, 至少应该有个分号
else if(ok2)x=10; | ok2=0,所以 不成立
else x=-1; | 最后结果 x = -1
大哥题都不对。
int
a=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf(“%d,%d,%d\n”,a,b,c);
按程序运行来讲吧。
第一句不说了
c=(a-=a-5)
给c赋值,把a-=a-5的结果赋给c;
(a-=a-5)=(a=a-(a-5));
把a=0;代入得a=5;
进而(a-=a-5)的值为5;
c=5;
接下来执行(a=b,b+3);
这里面又有逗号表达式。
a=b;因b=0;故a=0;
b+3;不对任何变量赋值,相当于空语句;
综上所述:a=0;b=0;c=5
论述完毕
这些结果不一定对的。之所以说不完全对是因为不同的系统对printf 的参数处理方式可能不一样。常见的会把 short 升级为int哦
#include <stdioh>void main() {
short i;
i=-4;
printf("\ni:dec=%d, oct=%o, hex=%x, unsigned=%u\n",i,i,i,i);
}
我们假设 printf不会把 short 升级为 int, 那么我们有
short 是 16位 二进制
原码 short 4 = 0000 0000 0000 0100
反码 short -4 = 1111 1111 1111 1011
补码 short -4 = 1111 1111 1111 1100
因此 八进制是 0177774 ,十六进制是 0xfffc
如果把这个数看做无符号数,那么就是 65532
1,(x--,y++,x+y)其实是一个逗号表达式,表达式的值为最后一部分的值即x+y的值,而逗号表达式的计算顺序就是顺序计算,先计算x--(计算后x=5),然后计算y++(计算后y=8),最后计算x+y(即计算5+8=13)
2,z--先获取z值然后再自减,先获取到z值为8,传递给func然后z自减为7,不过7已经跟func的调用无关了(注意如果这里是--z的话,就是先自减,然后把结果传给func,此时传给func的第2个参数就是7了,这其实就是前自减和后自减的区别)
所以传递给func的参数其实就是13和8,最后r=21
-16
~a意思是反 *** 作
负数计算法则就是取反后+1
所以(~a)=-(15+1)=-16
结果是C
for循环实际就是1~5求和,再加上初值1,所以结果就是-16了。
扩展资料:
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
参考资料来源:百度百科-for循环
以上就是关于以下程序的输出结果是( )全部的内容,包括:以下程序的输出结果是( )、执行以下程序后,其输出结果是( )。 int a=0,b=0,c=0; c=(a-=a-5)、以下程序的输出结果为( )。 #include <stdio.h> void main() {s等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)