【C++ 面试 - 基础题】每日 3 题(十六)
✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
46. 写出 int 、bool、float、指针变量与 “零值” 比较的 if 语句
//int与零值⽐较
if ( n == 0 )
if ( n != 0 )//bool与零值⽐较
if (flag) // 表示flag为真
if (!flag) // 表示flag为假//float与零值⽐较
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON) //其中EPSINON是允许的误差(即精度)。//指针变量与零值⽐较
if (p == NULL)
if (p != NULL)
47. 大小端字节序
大端字节序是看着一样的,数据低位存在内存大位 (高位)。
小端字节序看着是反过来的,数据低位存在内存小位 (低位)。
字节序的单位应该是字节,所以 string (char 为组织结构) 是没有大小端之分的。
但是看 int 和 short 是能看出来是大端字节序还是小端字节序,借助 union。
有现成的转换函数。BSD Socket提供了封装好的转换接口,方便程序员使用。包括从主机字节序到网络字节序的转换函数: htons、htonl;从网络字节序到主机字节序的转换函数:ntohs、ntohl。
h - host 主机,主机字节序
to - 转换成什么
n - network 网络字节序
s - short unsigned short
l - long unsigned int
总结一下,在网络传输中,通常使用大端字节序 (网络字节序)。在具体的操作系统中字节序取决于底层硬件架构。例如,Linux 和 Windows 操作系统主要运行在 x86 和 x86_64 (Intel 和 AMD 处理器) 架构上,这些处理器使用小端字节序。而其他硬件平台,如 PowerPC 和 SPARC 等,可能使用大端字节序。
48. m ain 函数执行前发生了什么?
main 函数执行之前,主要就是初始化系统相关资源:
-
设置栈指针。
-
初始化 static 静态和 global 全局变量,即 data 段的内容。
-
将未初始化部分的赋初值:数值型 short,int,long 等为 0,bool 为 FALSE,指针为 NULL,等等,即 .bss 段的内容。
-
运行全局构造器,估计是 C++ 中构造函数之类的吧。
-
将 main 函数的参数,argc,argv 等传递给 main 函数,然后才真正运行 main 函数 。