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'作为'for'循环体的'mol'索引。 –
可能的重复[错误消息:'jj'的名称查找已针对'范围确定'更改为ISO(如果使用'-fpermissive',则G ++将接受您的代码)](http://stackoverflow.com/questions/6556449/错误消息名称查找的jj更改为iso作为范围,如果你使用) –
在c中不允许在'for'语句中声明变量。在'for'语句之前移动'int i;'。如果你想在你的循环中做任何事情,你还应该从'for'的行中删除';'。 – woockashek