C语言钻石段位测试题答案

本文提供了C语言钻石段位测试题的答案,涵盖了数值后缀、预处理指令、函数指针、弱函数、内存分配、变参函数等多个主题,并探讨了相关知识点,如volatile关键字、数据类型转换和字符串拼接等。
摘要由CSDN通过智能技术生成

C语言测试题答案

C语言钻石段位测试题见此链接:https://blog.csdn.net/qq_23274715/article/details/106302027

  1. 常数123ul,123.45l中的ull代表什么含义?(2分)
    1. 答案:这属于数值后缀的知识点。具体请参看数值常量后缀相关介绍
  2. C语言中,数值16用十六进制表示为0x10,哪用二进制如何表示?(2分)
    1. 答案:0b10000.具体请参看数值常量后缀相关介绍
  3. 举例谈谈#define Mul(x,y) x*y这个带参宏的缺点?(2分)
    1. 答案:如果使用Mul(3+5,6).得到的结果则为3 + 5*6 = 33.和我们的预期不一致。所以定义带参宏时多用要用()。如应该使用#define Mul(x,y) (x)*(y)
  4. 谈谈#undef预处理命令的应用。(2分)
    1. 答案:取消之前定义的宏。可以用这个预处理命令来修改宏的值。具体请参看预处理指令使用
  5. 谈谈#if,#ifdef,#ifndef的使用区别。(2分)
    1. 答案:这是预处理命令的应用。具体请参看预处理指令使用
  6. 如果编译时,不满足某些条件,用户如何向编译器抛出警告或者错误。(2分)
    1. 答案:使用预处理命令#error,#warning。具体请参看预处理指令使用
  7. 谈谈函数指针的用途?(5分)
    1. 答案:常用于函数回调等。具体请参看弱函数与回调函数在模块化编程中的使用
  8. 谈谈弱函数的用途?(5分)
    1. 答案:具体请参看弱函数与回调函数在模块化编程中的使用
  9. volatile关键字的行为发生在哪个阶段?(编译还是运行?).(5分)
    1. 答案:编译阶段。体现在汇编代码中。具体请参看volatile关键字的使用你真的了解吗?
  10. 从函数、变量、作用范围角度谈谈static,extern.(5分)
    1. 答案:具体请参看
      1. 全局变量的存储类型
      2. 内部函数和外部函数
  11. 什么是可重入函数,什么是不可重入函数?(5分)
    1. 答案:具体请参看可重入函数和不可重入函数
  12. 编写一个判断处理器为大端还是小端的函数(大端返回1,小端返回0)。(3分)
    1. 大小端的介绍和判断函数。见处理器的大小端模式
  13. 编写一个给二维数组uint8_t data[4][8]分配内存的函数。(5分)
    1. 函数见此链接。给二维数组分配空间
  14. 编写一个变参函数,实现类似printf()功能。(5分)
    1. 答案:首先需要知道什么是变参函数。具体请参看C语言的变参函数
  15. 编写一个变参调试宏debug()。可以完成下面的打印控制。(5分)
    1. 这涉及到了变参宏相关的知识点。具体请参看c语言中的变参宏
    #define debug(MY_DEBUG_ENABLE,...) do{ \
        if(MY_DEBUG_ENABLE > 0){ \
            printf(__VA_ARGS__); \
        } \
    }while(0)
  16. 下面的这段程序,打印结果是什么?(5分)
    1. 答案:a>b.具体请参看c语言中数据类型的自动转换原则
  17. 32bit小端处理器上,下面的两个结构体各占多大内存,请画出内存分布图。(5分)
    1. 答案:具体请参看C语言字节对齐介绍
  18. 下面两个函数中使用const有何好处。(5分)
    1. 答案:具体请参看const关键字的用法
  19. 下面程序函数WaitThread()中的循环能跳出吗?为什么?(5分)
    1. 答案:如果使用优化编译。跳不出。具体请参看volatile关键字的使用你真的了解吗?
  20. 下面程序中***p5中的内容是什么?(5分)
    1. 这是一个对指针理解深度的考察题。具体请参看
      1. 指针剖析(上)
      2. 指针剖析(下)
  21. 分析下面程序的打印结果。(5分)
    1. 答案输出如下。详细使用请参考C语言中字符串拼接之#,##的妙用:

      guoweilkd,“guoweilkd”,12
      guoweilkd123

  22. 在下面程序中使用sprintf()函数将一个浮点数转换为字符串.其中浮点数的小数位由输入参数决定。(5分)
    1. 答案:sprintf()具体的格式化字符串可以参看printf函数使用大全.
    char *GetfloatStr(char *pBuff,float value,int nbit){
        sprintf(pBuff,"%.*f",nbit,value);
        return pBuff;
    }
  23. 下面程序的__attribute__属性有什么作用。(5分)
    1. 答案:这是一个有关编译、链接的问题。具体请参看c编程----段定义的使用

关于技术交流

此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值