Ich habe den folgenden Code-Schnipsel:Verständnis spezielle Art des Zugriffs C++/C-Array
int ndigit[10] = {0,0,0,0,0,0,0,0,0,0};
void count() {
char c;
while (cin.get(c)) {
if (c>='0' && c<='9') {
ndigit[c-'0']++;
}
}
So c
hat zwischen 0 und 9 (mit 0 und 9) sein, warum so ist es zu indizieren notwendig die Array wie ndigit[c-'0']
statt nur ndigit[c]
?
Wenn ich Recht habe, in beiden Fällen ein c
Wert kann mehr als einmal auftreten, so dass eine der Wert ndigit[c-'0']
wird sowieso überschrieben ...
Ich schätze Ihre Weisheit!
Weil ''0'! = 0' – Biffen
Nicht sicher, ob es als dupe aber in hohem Grade verwandt ist: http://stackoverflow.com/questions/15598698/why-does-subtracting-0-in-c-result -in-the-number-that-the-char-is-repräsentiert – NathanOliver