C语言中的堆栈括号匹配
当我执行此代码并调试时,当我输入两个括号时,我看到C语言中的堆栈括号匹配,c,data-structures,C,Data Structures,当我执行此代码并调试时,当我输入两个括号时,我看到op1和op2值之间的“h”。我不知道它是从哪里来的。你能帮我解决这个问题吗?它是关于没有指针的数据结构。我不知道这个垃圾值是从哪里来的 问题: op = pop(); printf("op1: %ch\n", op); //() = h op2 = ch; printf("op2: %ch\n", op2); 下面的链接有完整的代码。 字符的格式说明符是%c。正在打印您添加的额外h如果op和op2
op1
和op2
值之间的“h”。我不知道它是从哪里来的。你能帮我解决这个问题吗?它是关于没有指针的数据结构。我不知道这个垃圾值是从哪里来的
问题:
op = pop();
printf("op1: %ch\n", op); //() = h
op2 = ch;
printf("op2: %ch\n", op2);
下面的链接有完整的代码。
字符的格式说明符是%c。正在打印您添加的额外h如果
op
和op2
具有类型short int int
,则正确的代码为:
op = pop();
printf("op1: %hc\n", op);
op2 = ch;
printf("op2: %hc\n", op2);
由于类型实际上是char,您甚至可以编写:
op = pop();
printf("op1: %hhc\n", op);
op2 = ch;
printf("op2: %hhc\n", op2);
但是您可以使用
%c
作为short
和char
值,当传递给变量函数时,例如printf()
如果我将char转换为int,我可以在堆栈中获得paradensis吗?您可以将paradensis作为int或char存储在堆栈中。char作为其ASCII等效项存储在内部。仅为了将其显示为括号,您应该将其显示为字符,这可能会混淆%hc
和%ch
。。。只需卸下h
。