其实就相当于printf(“%f%s”(float *)&i,s)
用整型的i的地址去访问浮点内存中的相应地址由于未友亮被定散数义,故为0。
这是不定参数的特点。
具体可以参考:
http://blog.csdn.net/arong1234/archive/2008/05/18/2456455.aspx
你自己改为C吧#include
const int MAX=40
void main(void){
char infix[MAX]={'#'}
char oprator[MAX]={'@','#'}
int opr=1
char postfix[12]={'#'}
int post=0
int i,j,cnt=0,cntl
char c
//输入表达式,以等号结束
cin.get(c)
while(c!='液中='){
infix[cnt]=c
cnt++
cin.get(c)
}
cntl=cnt
for(i=0i<cnti++){
switch(infix[i]){
//左括号就直接入栈
case '(':
cntl=cntl-2
oprator[opr]=infix[i]
opr++
break
//右闹锋山括号则先退栈,直到遇见第一个左括号
case ')':
for(j=opr-1j>0j--){
if(oprator[j]!='('){
postfix[post]=oprator[j]
oprator[j]='#'
post++
}
else{
oprator[j] = '#'
break
}
}
opr=j
break
case '*':
case '/':
//如果前一个运算符为*或/,则先退栈,再入栈,否则直接入栈
if (oprator[opr] == '*' || oprator[opr] == '/') {
postfix[post] = oprator[opr]
oprator[opr]='#'
post++
}
oprator[opr] = infix[i]
opr++
break
case '+' :
case '-' :
//如果上一个运算符不是左括号也不是栈顶,则先退栈再入栈
if (oprator[opr-1] != '(' &&oprator[opr-1] != '@') {
postfix[post] = oprator[opr]
oprator[opr]='#'
}
oprator[opr] = infix[i]
opr++
break
default :
//如果是数字则直接进入后缀表达式数组
postfix[post] = infix[i]
post++
break
}
}
//如果扫描完成,则退基滚栈
for(j=opr-1j>0j--){
if(oprator[j]!='@'){
postfix[post]=oprator[j]
oprator[j]='#'
}
else
break
}
//输出结果
for(i=0i<cntli++)
cout <<postfix[i]
cout <<endl
}
Object h cons //p构造函数Object k cons //c1 构造函数
Object g copy cons // 形参物烂调用了拷贝构造函数
Object f copy cons /山蚂没/函数逗纳内c1调用拷贝构造函数
Object e copy cons //C2拷贝构造函数
Object e des //离开函数,析构c2
Object g des //析构形参
Object h des //析构p
Object f des //析构Func内部的c1
Object k des //析构main里面的c1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)