您的位置:首页 > 编程语言

笔试之语言特性代码记录

2017-01-11 10:31 197 查看
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
int ret = 0;

int i = 0;

for( i = 0; i < 2; i++ )
{
fork();
printf( "a\n" );
}

return ret;
}

// 输出6个a


#include <stdio.h>
#include <iostream>
using namespace std;

class A
{
public:
int &b;  //有这个sizeof(A)为16,在64位机器上,没有该引用,则为4
int a;

};

int main()
{
int ret = 0;
cout << sizeof(int*) << " " << sizeof(A) << " " << sizeof(int) << endl; // 8 16 4
//  unsigned int a = 1;
//  printf( "%d\n", a * (-2) );
//  cout << a * -2 << endl;

unsigned int a = 0x1FFFFFF7;
unsigned char b = a;
char c = a;
char *p = ( char * )&a;
long long data = 0xf1f2f3f4f8f0f5f7;
cout << sizeof(long long) << endl;

printf( "%x, %x, %x, %x\n", b, c, *p, data );

long long a1 = 1, b1 = 2, c1 = 3;
printf( "%d, %d, %d\n", a1, b1, c1 );

return ret;
}
/*
long long data = 0xf1fffffffffff5f7;
8
f7, fffffff7, fffffff7, fffff5f7

%x总是输出4个字节,所以当不足4个字节时,如b,c,*p会补,对应无符号位补0,有符号位补1,
对于超过4个字节的,也是将4个字节入栈;

*/


1. #define定义的宏只在本文件有效

//myheader.h
#ifndef MYFILE
#define MYFILE

void test();

#endif

// use1.cpp
#include <iostream>
using namespace std;

//#include "myheader.h"
#define MAX 10

void func()
{
#ifdef MYFILE
cout << "MYFILE is defined" << endl;
#else
cout << "MYFILE is not defined" << endl; //虽然在use1.cpp中包含了#include "myheader.h",但是该文件中没有,故MYFILE并没有定义
#endif
return;
}

// use2.cpp
#include "myheader.h"
#include <iostream>
using namespace std;

extern void func();

int main()
{
func();
//cout << MAX << endl;   //会出现:error: ‘MAX’ was not declared in this scope
return 0;
}

g++ use1.cpp use2.cpp -o use

./use
MYFILE is not defined

故下面代码是为了防止同一个文件包含一个头文件多次
#ifndef MYFILE
#define MYFILE

#endif

===========================
#include <iostream>

using namespace std;

int cnt = 0;

int show()
{
cnt = 9;
return 0;
}

int main()
{
cout << show() << ', ' << cnt << endl;  // 输出 0, 0
return 0;
}


#include "myheader.h"
#include <iostream>
using namespace std;

extern void func();

extern const int v1;
extern const int v2;

class Test
{
private:
static int a;
};

int Test::a = 10;
// static int Test::a = 10; //编译出错

void f( const int &a ) //可以编译通过,但若去掉const则编译出错
{
cout << "test f(const int&)" << endl;
return;
}

//int mal( int a, int b = 2, int c = 3 );
int mal( int a, int b = 2, int c = 4 )
{
//int test()
//{
//  return 0;
//}

cout << a + b + c << endl;
return 0;
}

template <typename T> T add( T x, T y )
{
return x + y;
}

class A
{
public:
int a;
int &b;
};

// 分解质因数,任何数都可以用若干个质数相乘得到

void prim( int m, int n )
{
if( m >= n )
{
while( m % n != 0 )
{
++n;
}

cout << n << endl;

m /= n;
prim( m, n );

}

return;
}

typedef int* PINT;
typedef int *PINT1;
// PINT等价于PINT1

typedef int fun( int *, int );

int testfun( int *p, int a )
{
return a;
}

class ConstRef
{
public:
ConstRef( int ii ) : i(ii), ci(i), ri(ii){}

void show()
{
cout << ci << ' ' << ri << endl;

ri = 8;
cout << ci << ' ' << ri << endl;
}

private:
int i;
const int ci;
int &ri;

};

int main()
{
int hah = 0;
int &p33 = hah;
cout << sizeof(int) << ' ' << sizeof(const int) << ' ' << sizeof(p33) << endl;

cout << sizeof(ConstRef) << endl;

ConstRef obj(3);
obj.show();

int t1 = 9;
const PINT p = &t1;
const int *p2 = &t1;
const PINT1 p3 = &t1;
*p3 = 3;
*p = 10; //编译通过
//*p2 = 20;  //编译出错
//p = &t1;
//p3 = &t1; //编译出错 assignment of read-only variable ‘p3’
cout << t1 << endl;

int *p1;
//*p1 = 9;
int data = 27;
while( cin >> data )
{
prim( data, 2 );
cout << "===============================" << endl;
}

cout << "sizeof(A)=" << sizeof(A) << endl;
cout << "sizeof(int) = " << sizeof(int) << endl;

//add( 4.3, 2 );
add<float>( 4.3, 3 );
func();
//cout << MAX << endl;
//cout << v1 << endl; //访问出错
cout << v2 << endl;

const char *pp;
//(**pp) = 'c';
cout << mal( 2 ) << endl;
f(1);
return 0;
}


#include <iostream>
using namespace std;

//#include "myheader.h"
#define MAX 10

const int v1 = 10; //c++中只能在当前文件中使用
extern const int v2 = 20; //c++可以在其他文件中使用

// c中const变量为外部链接,而c++中为内部链接

void func()
{
#ifdef MYFILE
cout << "MYFILE is defined" << endl;
#else
cout << "MYFILE is not defined" << endl;
#endif
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试-面试