笔试之语言特性代码记录
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; }
相关文章推荐
- (记录)笔试题之语言和程序设计
- 【笔记】《C#高效编程改进C#代码的50个行之有效的办法》第1章C#语言习惯(1)--属性的特性以及索引器(SamWang)
- 华为上机笔试题目和代码—————语言识别问题
- 使用IAR的扩展语言特性编写可复用的代码
- 代码健壮性的获得 —— 借助编译器及语言的语法特性
- (记录)笔试题之语言和程序设计
- 下面哪些特性可能导致代码体积膨胀:----腾讯2016研发工程师在线模拟笔试题
- C语言学习基础代码记录
- XAML语言的调试方法。Silverlight 5 beta新特性探索系列:2.在XAML代码中设置断点和
- 方法代码Scala中的语言特性是如何实现的(2)
- 多语言代码生成器开发日志1
- 一次代码重构记录
- 使用公共语言运行库强制代码访问权
- Java中,利用语言与平台特性改进RMI分布计算框架
- JavaScript语言中的Literal Syntax特性
- 语言的进步与代码生成
- ASP中对两个ACCESS库里的不同表的记录拷贝代码,采用ADODB.Command
- 刚收到微软通知笔试的邮件,记录自己的心情。
- 多语言代码生成器开发日志2
- Java中,利用语言与平台特性改进RMI分布计算框架