1、bool、float、指针变量与"零值"比较的if语句?
答:
bool flag; if(flag),if(!flag)
char *p; if(p==NULL),if(p!=NULL)
float x;
const float EPSILON = 1e-6;
if((x>=-EPSILON)&&(x<=EPSILON)) //(-0.000001~0.000001)
if((x<-EPSILON)&&(x>EPSILON)) //(+INFINITE~0.000001),(-0.000001~-INFINITE)
2、const有什么用途?
答:
(1)可以定义const 常量
(2)const 可以修饰函数的参数、返回值及函数的定义体。被const修饰的东西都受到强制保护,可以预防意外地被修改,能提高程序的健壮性。
3、在C++程序中调用被C编译器编译后的函数,为什么都要加extern "C" ?
答:
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译器编译和被C编译器编译后生成的内部名字是不同的。假设某个函数的原型为:void foo(int x,int y);该函数被C编译器编译后的内部名字为_foo,面C++编译器则会产生像_foo_int_int之类的名字。C++提供了C连接交换指定符号 extern "C" 来解决名字匹配的问题。
4、类型转换:
double d = 100.25;
int x = d;
int *pInt = (int*)&d;
请问以下两个语句输出什么?
cout<< x <<endl;
cout<< *pInt <<endl;
答:
第一个输出 100,x取d的整数部分。
第二个结果不是100,*pInt等于d的前4个字节的数值,而不是d的整数部分。
5. const的含义及实现机制,比如:const int i,是怎么做到i只可读的?
答:
const用来说明所定义的变量是只读的。
这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。
6. valitale的含义
答:
valitale直接从内存读取数据,防止cache造成数据不一致
7. socket在什么情况下可读?
答:
新数据到达;
收到FIN报文好像也是可读;也就是对方要求断开连接
新连接可读,比如收到了ACK+SYN,connect完成
8. 流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?
答:
流量控制:控制连接的两端发送数据不要太快;
拥塞控制:控制连接所经过的路由器别超负荷;
感知拥塞应该是受到了ICMP抑制报文