嵌入式历练者 2021-10-27 19:41 采纳率: 0%
浏览 81

考考你们的C语言功底

1.为什么下面的代码会返回0?

 int x;
 return x == (1 && x);


2.为什么下面的代码会返回0而不是-1?

return ((1 - sizeof(int)) >> 32);

3.函数和函数指针可以相互转换。下面的语句哪些是合法的?

int (*pf)(void);
int f(void)
{

   pf = &f; // 没问题
   pf = ***f; // 取址?
   pf(); // 函数指针可以调用?
   (****pf)();  // 这又是什么?
   (***************f)(); // 这个够变态了吧?
}

收集于互联网陈皓博客,C语言挺好玩的!

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-10-27 19:47
    关注

    第一段x没有赋值,那么x会是个随机值,1 && x是个逻辑表达式,结果只会是0或1,自然与随机的x值相等的概率很低,那么逻辑表达式==的结果就是0
    第二段无论前面相减结果是多少,>>32就是右移32位,那么整型值所有位都被清空了,补充填入的全是0,结果自然就是0

    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日