Почему синтаксическая ошибка приводит к бесконечному циклу вместо фатальной ошибки во время компиляции? - PullRequest
0 голосов
/ 19 октября 2019

Я делаю следующую ошибку в цикле for:

for(i=0;i<(blockSize);i=+2) 

i = + 2 вместо i + = 2

Theрезультат был сумасшедшим, без ошибок компилятора, но с хорошим бесконечным циклом. Я сошел с ума ...

Почему у меня произошла ошибка? Это ошибка или нет? Кто-нибудь может это объяснить?

Я использую gcc для микроконтроллеров ARM.

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Предполагая, что blockSize> 2, i = + 2 идентичен i = 2, поэтому цикл никогда не завершается, поскольку i не увеличивается.

0 голосов
/ 19 октября 2019

Ошибка возникает из-за того, что i=+2 интерпретируется как i = +2 («я равен положительным двум»). i устанавливается на 2 после каждого цикла, что означает, что ваш цикл никогда не заканчивается.

+ и - могут быть помещены перед числами для указания их знаков в C.

...