1.下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
int n;
if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式
第二种,如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=
2.写出运行结果:
{// test2
union V {
structX {
unsigned chars1:2;
unsignedchar s2:3;
unsignedchar s3:3;
} x;
unsignedchar c;
} v;
v.c = 100;
printf("%d", v.x.s3);
}
Unsigned char类型100的二进制表示为:01100100 v.x.s3为后三位,及100,因此答案为3.
3.用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==65535 )
{
cout<<"16 bit"<<endl;
}
else
{
cout<<"32 bit"<<endl;
}
4.C和C++有什么不同?
从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,
c++编写面向对象的程序比c容易
从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。
从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比
c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++
C语言是结构化编程语言,C++是面向对象编程语言。
C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。
5.在不用第三方参数的情况下,交换两个参数的值
方法一:
#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)
6.进程间通信的方式有?
进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 ,等
7.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正
int add_n(int n)
{
static int i=100;
i+=n;
return i;
}
答:因为static使得i的值会保留上次的值。去掉static就可了
8.下边代码输出结果
union a {
int a_int1;
double a_double;
int a_int2;
};//8
typedef struct
{
a a1;
char y;
} b;//12
class c
{
double c_double;
b b1;
a a2;
};//28
输出cout<<sizeof(c)<<endl;的结果?