中标软件面试试题解析:逻辑判断与类型大小
4星 · 超过85%的资源 需积分: 9 195 浏览量
更新于2024-07-31
16
收藏 89KB DOC 举报
"这是一份关于中标软件面试题目的资料,涵盖了C++编程语言的基础知识,包括变量比较、数据类型尺寸、头文件处理以及const关键字的使用等常见问题。"
一、变量与“零值”比较
在C++中,正确的比较BOOL变量flag与“零值”的方式是:
- 如果flag为真,则if(flag);如果flag为假,则if(!flag)。
避免使用等于或不等于特定布尔值(如TRUE、FALSE、0、1)的比较,因为这不符合良好的编程风格。
对于float类型的变量x与“零值”比较,应考虑到浮点数的精度问题,通常设置一个极小的误差值EPSINON,例如:
- 如果x在-EPSINON和EPSINON之间,则认为x接近于0。正确的if语句是:if((x >= -EPSINON) && (x <= EPSINON))。
不要直接使用if(x == 0.0)或if(x != 0.0),因为浮点数的精确比较可能导致错误的结果。
对于指针变量p,正确的与“零值”比较方法是:
- 如果p等于NULL,则if(p == NULL);如果p不等于NULL,则if(p != NULL)。
避免使用p == 0或p != 0,这样的写法不够清晰,也可能是错误的。
二、sizeof运算符
在Windows NT下,对于32位C++程序,sizeof运算符用于确定数据类型或对象占用的内存大小:
- sizeof(str) = 6,字符串常量包括结束的空字符,所以长度是6。
- sizeof(p) = 4,指针在32位系统中通常占4个字节。
- sizeof(n) = 4,int类型占用4个字节。
在函数Func内部,sizeof(str) = 4,因为在这里str被视为指向字符的指针,占用4个字节。
- sizeof(p) = 4,动态分配的内存指针在32位系统中同样占用4个字节。
三、简答题
1. ifndef/define/endif组合用于头文件保护,确保头文件在同一个编译单元中只被包含一次,防止重复定义导致的错误。
2. `#include <filename.h>`是系统头文件引用,编译器从标准库路径开始查找;`#include "filename.h"`是用户头文件引用,编译器从当前工作目录开始查找。
3. const关键字的用途:
- 定义常量,如`const int a = 10;`,a的值在程序执行期间不能改变。
- 修饰函数参数,使参数成为只读,防止函数内部修改传入的值,如`void func(const int b)`。
- 修饰函数返回值,表示返回的是不可修改的值,如`const int getNum() { return 20; }`。
- 修饰类的成员变量,创建常量成员,如`class MyClass { private: const int c; };`
- 在指针或引用前使用const,表示指针或引用所指向的对象不可修改,如`int *const p = &a;`
4. 在C++程序中调用C编译器编译的函数时,需使用extern "C"来声明函数,这是因为C++使用名称修饰(name mangling),而C语言不进行此操作。extern "C"告诉C++编译器这些函数应按照C语言的规则进行处理,避免链接时因名称修饰不同导致的错误。例如:
```cpp
extern "C" {
#include "c_function.h"
}
```
这样,C++程序就可以正确调用C函数了。
2013-08-30 上传
2023-08-07 上传
2021-09-07 上传
2022-10-30 上传
2022-10-30 上传
2021-10-31 上传
2024-06-09 上传
newnewman80
- 粉丝: 317
- 资源: 124
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍