逻辑:
1.1 : 0,4,18,(),100:
0=1 ^ 2 *(1-1);
4=2^ 2 *(2-1);
18=3^2 *(3-1);
100=5^2 *(5-1)
?()=4^2 *(4-1)=48
1.2: 0,1,3,10,()
0;
1=0^2 +1 ;
3= 1^2 +2;
10= 3^2 +1;
?()=10^2 +2=102
2.1 define 定义的宏和inline定义的宏有什么区别?
答:
编译态:
内联函数参数类型和返回值类型被指定
宏无类型概念,展开后有编译器检查语法。
执行态:
宏对参数不运算,直接替换,
内联函数是函数,进行表达式运算,参与函数运算。
2.2: volatile在C,C++,Java的区别是什么?
java 中:支持volatilt,但是用于其他的用途:
1.读和写一个volatile变量有全局的排序,也就是说:
每个线程访问一个volatile作用域会在继续执行之前读取他的当前值。即先读后操作。
而不是使用一个缓存的数值。但是并不能保证经常读写volatilt作用域读和写的顺序。
2.(适用于java 5之后):
volatile的读和写建立一个happens-before关系,类似于happens-before关系,申请一个释放一个互斥锁。
c/C++中:volatile 关键字的作用:
1.允许访问内存的映射设备
2.允许在stejmp 和longjmp之间使用变量
3.允许使用信号处理函数中使用sig_atomicb变量:
3.1 memcpy函数内部实现:
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
refence: