下列程序段的输出结果是( )。 #define M(x,y) x*y printf("%d",M(10+2,2));

下列程序段的输出结果是( )。 #define M(x,y) x*y printf("%d",M(10+2,2));,第1张

#define M(x,y) xy printf("%d",M(10+2,2));

宏定义仅仅是预编译器的展开 即

M(10+2,2) ------ printf("%d",10+22);

打印出来时14

答案是0

int k没有初始化,所以初始值不确定,但是int类型 4个字节(范围是-2147483648~2147483647) 所以在计算k的值时候,从起始地址往下数32位, 超出32位的会被截断

如果是正数,那最后就是0,很直观

如果是负数(8个字节来看)

0xffffffffffffffff === -1

0xfffffffffffffffe === -2

0xffffffff80000000 === -2147483648

0xffffffff7fffffff === -2147483649

但整型4个字节,所以对于-2147483649,它计算0x7fffffff的大小,变成了2147483647,回到正数,最后为0

答案是1,3!第一次调用fun时x=3则x/2=1,if条件为真,再次调用fun,这时参数为x/2=1即fun(1);

则x/2=0;if条件不成立执行printf语句,即输出1,然后返回,再执行第一次调用的fun的下一条语句即使printf,输出3;所以结果为13

以上就是关于下列程序段的输出结果是( )。 #define M(x,y) x*y printf("%d",M(10+2,2));全部的内容,包括:下列程序段的输出结果是( )。 #define M(x,y) x*y printf("%d",M(10+2,2));、c语言题目:下面程序段的输出结果是什么、以下程序段的输出结果是 #include <stdio.h> int fun(int x,int y)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存