程序运行结果分析

程序运行结果分析,第1张

这好掘宽个整型的 i 不会被隐式类型转换为浮点型,而是被直接按内存内容当作浮点型。

其实就相当于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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12471622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存