char i = 10; cout << sizeof(i) << ": "; void *pp = malloc(10); cout << sizeof(p) << endl; }
6:4:1:4
-------------------------------------------------------------------------- 14.写出运行结果: {// test2 union V { struct X { unsigned char s1:2; unsigned char s2:3; unsigned char s3:3; } x;
unsigned char c; } v;
v.c = 100; printf("%d", v.x.s3);
}
3
-------------------------------------------------------------------------- 15.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数
A1: 16位的系统下, int i = 65536; cout << i; // 输出0; int i = 65535; cout << i; // 输出-1;
32位的系统下, int i = 65536; cout << i; // 输出65536; int i = 65535; cout << i; // 输出65535;
A2:
int a = ~0; if( a>65536 ) { cout<<"32 bit"<<endl; } else { cout<<"16 bit"<<endl; }
-------------------------------------------------------------------------- 16.C和C++有什么不同?
从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是, c++编写面向对象的程序比c容易
从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。
从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比 c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++
C语言是结构化编程语言,C++是面向对象编程语言。 C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。
-------------------------------------------------------------------------- 17.在不用第三方参数的情况下,交换两个参数的值 #include <stdio.h>
void main() { int i=60; int j=50; i=i+j; j=i-j; i=i-j; printf("i=%d\n",i); printf("j=%d\n",j); }
方法二: i^=j; j^=i; i^=j;
方法三: // 用加减实现,而且不会溢出 a = a+b-(b=a)
-------------------------------------------------------------------------- 18.有关位域的面试题(为什么输出的是一个奇怪的字符)
a.t = 'b';效果相当于 a.t= 'b' & 0xf;
'b' --> 01100010 'b' & 0xf -->>00000010 所以输出Ascii码为2的特殊字符
char t:4;就是4bit的字符变量,同样 unsigned short i:8;就是8bit的无符号短整形变量
-------------------------------------------------------------------------- 19.int i=10, j=10, k=3; k*=i+j; k最后的值是?
60
-------------------------------------------------------------------------- 20.进程间通信的方式有?
进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 , DDE等
-------------------------------------------------------------------------- |