笔试之语言特性代码记录

#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;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值