0

このプログラムでこの構文エラーが表示される理由がわかりません。

#include <stdio.h>
#include <stdbool.h>

#define N 30

int main(void) {
    char sieve[N], *sp;
    int number;
    for(sp = sieve; sp < sieve + N;)
        *sp++ = true;          

    for(number = 3;; number += 2) {
        sp = sieve + (number – 3)/2;
        if(sp >= sieve + N)
            break;
        while(sp += number, sp < sieve + N)
            *sp = false;
    }

    printf("2\n");
    for(number = 3, sp = sieve; sp < sieve + N; number += 2, sp++) {
        if(*sp)
            printf("%d\n", number);
    }

    return 0;
}

13 行目に表示されます。sp = sieve + (number - 3)/2;

error: stray '\342' in program
error: stray '\200' in program
error: stray '\223' in program
error: expected '>' before numeric constant.

別のコンパイラでも試しましたが、この方法でも試しました sp = sieve + ((number - 3)/2);が、何も起こりません。

4

1 に答える 1

8

13行目のマイナス記号の文字は、マイナス記号ではなく、ハイフンです(そう呼ばれていると思います)。

 sp = sieve + (number – 3)/2;

する必要があります

 sp = sieve + (number - 3)/2;

その文字を変更すると、コードがコンパイルされます。

于 2013-03-22T12:49:47.207 に答える