转换双< - >烧焦

时间:2015-04-15 19:47:31

标签: c list stack converter

我需要创建一个计算器,因为我必须将operands (numbers)operators (+Sum, *Mult, -Sub, ^Expo)分开到不同的堆栈/列表

我需要将它们中的每一个保存在一个堆栈上(这是一个列表) 我无法做的是,我该如何转换角色" +"成双,然后从双重回到角色?或者有更简单的方法吗?我试着打印这个:

char c = "+";
double d = c; //Now d = -23.00
printf("Plus: %c\n", d); //Prints an unknown character "?".  

我怎样才能到达我需要的地方?

1 个答案:

答案 0 :(得分:0)

如果d的类型为double,则其正确输出为printf("Plus: %lf\n", d);printf("Plus: %lg\n", d);printf("Plus: %le\n", d);,而不是printf("Plus: %c\n", d);,因为{ {1}}表示"输出char数据"。

在C语言中,%c不是一个字符,它是一个类型为"+"的文字,表示字符串(形式上它是一个指针)。

当您对不同的数据类型使用char *(赋值运算符)时,会发生一些数据转换(例如数据类型提升),但这些转换并不总是有用。因此,在您的示例中,据我所知,您希望将操作存储为字符='+''-'等,将数据存储为'*'值。在这种情况下,您根本不需要转换doublechar。您唯一需要的是设计数据结构,用于将数据和操作一起存储,但采用不同的数据类型。

例如,正如您所写的"不同的堆栈/列表"可以用于数据和运营商...不同!!!