以下程序的输出结果是( )

以下程序的输出结果是( ),第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9355416.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存