#include<stdio.h>
#define CUBE(x) (x*x*x)
int main()
{
int a, b=3;
a = CUBE(++b);
printf("%d, %d\n", a, b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码返回的值a=150和b=6.请解释一下.
我认为当它执行时a会被计算为a=4*5*6=120但是根据编译器不是真的,所以请解释逻辑....
#include<iostream.h>
#include<conio.h>
typedef ostream& (*T)(ostream& , int);
class Base
{
T fun;
int var;
public:
Base(T func, int arg): fun(func) , var(arg)
{};
friend ostream& operator<<(ostream& o, Base& obj)
{
return obj.fun(o,obj.var);
}
};
ostream& odisp(ostream& o, int i);
{
o<<”i=”<<i<<endl;
return o;
}
Base disp(int i)
{
return base(odisp, i)
};
Run Code Online (Sandbox Code Playgroud)
自从第一行起,我就完全陷入了困境,因为我无法弄清这个typedef的工作原理..它看起来像是函数语法的指针,但再次ostream让我感到困惑。请解释一下整个代码的工作原理。