2015-05-07 2 views
2

Я не мог понять разницу между этими двумя операторами.Разница между - и - знаками для операции вычитания

Использование дает разницу в выходе.

Следующий фрагмент кода дает ошибку:

void main() 
{ 
    float x = 1.1 ; 
    while (x == 1.1) 
    { 
     printf ("\n%f", x) ; 
     x = x – 0.1 ; 
    } 
} 

но следующие работает нормально:

void main() 
{ 
    float x = 1.1 ; 
    while (x == 1.1) 
    { 
     printf ("\n%f", x) ; 
     x = x - 0.1 ; 
    } 
} 

Пожалуйста, дайте мне знать разницу.

+1

'дает ошибку' ... какая ошибка? –

+5

Один выглядит как обычный символ '-' ASCII, другой выглядит как некоторый символ Юникода, который компилятор, вероятно, не может обработать. –

+1

BTW, 'void main()' -> 'int main (void) .' –

ответ

7

Компилятор ожидает символа - для вычитания. Это имеет ASCII-код 45 (десятичные) == 0x2D (шест)

Он присутствует на каждой клавиатуре, как правило, в два раза (обычная клавиатура, клавиатура)

В эти дни у нас есть Unicode и есть много «символов» которые выглядят одинаково, но имеют различный , что означает, и компилятор не распознает эти «экзотические» символы как обычный «минус», а вместо этого производит «синтаксическую ошибку».

1

Разница - один символ минус символ, другой какой-то неясный символ, который выглядит как минус

4

I could not understand the difference between these two operators

Знак минуса - является непросроченным оператора в c, бинарный оператор вычитания, десятичный 45 в ASCII.

Другой, называемый (любой из en/em/figure/quotation) dash не является допустимым cоператор (это Unicode символ). Компилятор очень прав, чтобы жаловаться.

FWIW, в вашем коде,

while (x == 1.1) 

будет почти всегда дают FALSE как это не делать то, что вы ожидаете, что делать. That is not how you compare floating point numbers. Вы должны изменить свою логику.

Также обратите внимание, что рекомендуемая подпись main(): int main(void).

+1

@ KlasLindbäck Спасибо за добавление. :-) –

Смежные вопросы