name lookup of 'i' change for ISO 'for' scoping[-fpermissive]
Что случилось с моей программой? -fpermissive
Что это значит?
Что не так с моим кодом?
код должен вычислить молярную массу:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define maxn 1000
int main() {
double c = 12.01, h = 1.008, n = 14.01, o = 16.00, sum = 0, al, num;
char mol[maxn];
scanf("%s", mol);
for (int i = 0; i < strlen(mol); i++);
{
if (isalpha(mol[i])) {
if (mol[i] == 'C')
al = c;
if (mol[i] == 'H')
al = h;
if (mol[i] == 'O')
al = o;
if (mol[i] == 'N')
al = n;
if (isalpha(mol[i + 1]))
sum += al;
else {
num = mol[i + 1] - '0';
sum += al * num;
}
}
}
printf("%lf\n", sum);
return 0;
}
Смотрите ',' в конце 'для (...)' линии? Из-за этого вы эффективно используете необъявленный «i» в качестве индекса «mol» в том, что вы хотели быть телом цикла 'for'. –
Возможный дубликат [Сообщение об ошибке: поиск имени «jj» изменен для ISO 'для' scoping, (если вы используете '-fpermissive', G ++ примет ваш код)] (http://stackoverflow.com/questions/6556449/ error-message-name-lookup-of-jj-changed-for-iso-for-scoping-if-you-use) –
В c не разрешено объявлять переменную в 'for'. Переместите 'int i;' перед 'for'. Вы также должны удалить ';' из строки с 'for', если вы хотите что-то сделать в своем цикле. – woockashek