2016-06-25 11 views
-2

私はMicrosoft Visual Studioを使用してコードをコンパイルしています。私は条件a[i] > kためwhileループでこのエラーを取得する:whileループでエラーを取得する '>': 'int'から 'int *'に変換しない

'>':ここにint型* 'から' int型からのいかなる変換

はコードではありません:

/* Sort the array using Recursive insertion sort */ 
#include <stdio.h> 
#include <conio.h> 

void RecursiveInsertionSort(int a[], int); 

/* Recursively call the function to sort the array */ 
void RecursiveInsertionSort(int *a, int n) 
{ 
    int i,k; 
    if (n > 1) 
     RecursiveInsertionSort(a, n - 1);//Call recursively 
    else { 
     k = a[n]; 
     i = n - 1; 
     while (i >= 0 & & a[i] > k){ 
      a[i + 1] = a[i]; //replace the bigger 
      i = i - 1; 
     } 
     a[i + 1] = k; //Place the key in its proper position 
    } 
} 

/* Main function */ 
void main() 
{ 
    int a[] = { 5,4,3,2,1 }; // Array unsorted declared 
    RecursiveInsertionSort(a, 5);//call recursive function to sort the array in ascending order 
} 

誰でもエラーを理解できますか?

+7

アンパサンドの間にスペースがありますか? – Li357

+0

ありがとう...シルリーミス – Sandeep

答えて

1

あなたは論理演算子&&どうあるべきかの内部の空間があります。これはi >= 0&a[i] > k(2つのブール値の間でビット単位のAND操作で

while (i >= 0 & &a[i] > k) { 

と同等です

while (i >= 0 & & a[i] > k){ 

を)。

&a[i] > kは(intある)kと(int *ある)a[i]のアドレスを比較します。したがって、エラー。

関連する問題