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

考考你们的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日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办