嘿,我不明白为什么我的代码不写,当我只用++ ndigit [c](而不是++ ndigit [c -'0'],然后用++ nchar [c]它没关系
如果你有任何tuto,我会非常感兴趣!
#include <stdio.h>
int main()
{
int c, i, y, ns;
int ndigit[10];
int nchar[26];
ns = 0;
for(i = 0; i >= 0 && i<= 9; ++i) {
ndigit[i] = 0;
}
for(y = 'a'; y <= 'z'; ++y) {
nchar[y] = 0;
}
while((c = getchar()) != EOF) {
if(c == ' ' || c == '\t') {
++ns;
}
if(c >= 'a' && c <= 'z') {
++nchar[c];
}
if(c >= '0' && c <= '9') {
++ndigit[c];
//++ndigit[c-'0'];
}
if(c == '\n') {
printf("chiffres: ");
for(i=0;i<10;++i) {
printf("%d:%d ", i, ndigit[i]);
}
printf("lettres: ");
for(y='a';y<='z';++y) {
printf("%d:%d ", y, nchar[y]);
}
printf("space: %d\n", ns);
}
}
}
答案 0 :(得分:2)
实际上,当您将变量设置为c='0'
时,这意味着c的值现在是&#39; 0&#39;的ascii值。那是= 48。
由于您将c的值设置为48但数组大小为10,因此您的代码将获得运行时异常,因为您尝试访问的索引甚至不存在。
请记住,当您使用'0'
时,它意味着角色。因此,将此值设置为int
变量会使该值等于该字符的ascii值。相反,您可以直接使用c=0
。
答案 1 :(得分:1)
因为字符<system.web>
<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
<system.web/>
(例如)通常不等于整数'4'
。即4
。
使用最常见的字符编码方案ASCII,字符'4' != 4
的值为'4'
,字符52
的值为'0'
。这意味着,如果你做,例如48
您在实践中'4' - '0'
并将结果52 - 48
作为整数。