为什么编译器无法在我的代码中检测到减号?

时间:2018-10-15 03:05:08

标签: c compiler-errors

我遇到了编译器问题。我的代码段在下面,但是当我运行它时,它的编译方式不同,无法检测到 '-'(减号)并将其替换为'?' (问号),使其成为三元运算符。

我的代码 :-

unsigned long long int find(long int N , int K){
   if(K == 2){
      return 2*(N - 1)*(N - 1);
   }

   else{
      return(find(N − 1 , K) + find(N − 1 , K − 1) + find(N − 2 , K − 1));
   }
}

编译器错误:-

prog.c: In function ‘find’:
prog.c:52:27: warning: left-hand operand of comma expression has no effect [-Wunused-value]
     return(find(N ? 1 , K) + find(N ? 1 , K ? 1) + find(N ? 2 , K ? 1));
                       ^
prog.c:52:30: error: expected ‘:’ before ‘)’ token
     return(find(N ? 1 , K) + find(N ? 1 , K ? 1) + find(N ? 2 , K ? 1));
                          ^
prog.c:52:16: error: too few arguments to function ‘find’
     return(find(N ? 1 , K) + find(N ? 1 , K ? 1) + find(N ? 2 , K ? 1));

我尝试使用codechef和geeksforgeeks的C编译器,但仍然会给出编译错误。
请建议该怎么做。

1 个答案:

答案 0 :(得分:0)

在某些地方,您的代码实际上包含U+2212 Unicode减号。

通常情况下,编译器不会接受这一点,您应该使用ASCII减号。

我建议使用不允许输入非ASCII字符的文本编辑器,这样可以避免此类问题。