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