如果条件没有进入程序,则给出分段错误

时间:2016-04-03 23:04:20

标签: c++ if-statement segmentation-fault

代码有点像

List<Rat>

here is the actual code with some comments,我已经尝试将中缀转换为postfix的程序。这是我的意见和问题...

cin >> n  // test cases
for( n times )
{ 
 .....
  for(;;)
    {
     getline(cin,inp) //inp is supposed to be +,-,*,\,0-9,if simply enter pressed program passes out of loop
      for(;;)
      {
       if (inp[0] == '*')
       {
        do stuff...
       }

       if (inp[0] == '\')
       {
        do stuff...
       }         

       if (inp[0] == '+') \\ this is where the problem occurs
       {
        do stuff...
       } 
    .....
    .....
        }
    }
return 0 ;
}

我尝试了最好的解释代码和问题的问题,我问这个问题,因为问题对我来说完全是模棱两可的,需要任何解释请告诉我。

另外,给出任何建议调试这些问题,我之前有这样的错误,我不能每次问这里。将任何推荐给初学者 - &gt; amatuer编码器以解决此类分段错误。

谢谢和问候

1 个答案:

答案 0 :(得分:0)

一般建议:

使用您提供的断点和其他功能来查找问题。

自c ++诞生以来已有几十年了,不会有这样的错误。

DIAG:

对于调试消息,将cout<<"+ detected";更改为cout<<"+ detected"<<endl ;endl用于刷新缓冲区并将其放入屏幕。

它会输入你的if条件并且在

失败

if (stk.top() == '*' || stk.top() == '/' && stk.size() != 0 )

如果stk.top()成功,当然stk.size() != 0。它不是空的。

如果stk.empty() == truestk.top()将尝试从空堆栈中获取某些内容并将seg错误抛回。

并且在这之下只有几行,另一个if-statement出现了同样的错误:

else if (stk.top() == '-' && stk.size() != 0 )

我更改了这些行,代码适用于输入序列1 3 * / +