我需要创建一个计算器,因为我必须将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 "?".
我怎样才能到达我需要的地方?
答案 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 *
(赋值运算符)时,会发生一些数据转换(例如数据类型提升),但这些转换并不总是有用。因此,在您的示例中,据我所知,您希望将操作存储为字符=
,'+'
,'-'
等,将数据存储为'*'
值。在这种情况下,您根本不需要转换double
到char
。您唯一需要的是设计数据结构,用于将数据和操作一起存储,但采用不同的数据类型。
例如,正如您所写的"不同的堆栈/列表"可以用于数据和运营商...不同!!!