2016-08-29 5 views
1

Ich bin gespannt, wie dies funktioniert, um die bereitgestellten Ausgabe zu produzieren. Der Ausgang ist 4, die das 5.e Zeichen im Alphabet ist (was zu erwarten ist) und nachfolgende alphabetische Zeichen zum z Charakter des ganzen Weg arbeiten, die auch 25C++ Berechnung einer Char-Reihenfolge

Beispielprogramm

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string str = "e"; 
    int numericalvalue = ((str[0]) - 'a'); //this line of code im trying to understand 
    cout << numericalvalue; 
    return 0; 
} 
+8

Kennen Sie die ASCII-Tabelle? – AndyG

+1

Zeichen sind intern nur Zahlen (siehe ASCII-Tabelle), alles, was Sie tun, ist die Zahlen, die die Zeichen darstellen, zu subtrahieren. – Hayt

+0

Ja, aber der Dezimalwert des Zeichens e ist 101. Subtrahiert das den Wert von a von ihm und gibt es dann einfach zurück? – simon

Antwort

3

Es kehrt hat mach mit der ASCII-Tabelle.

Sein Zeichen in der Menge ist eine eindeutige ganze Zahl zugewiesen. In Ihrem Fall hat das Literal 'a' den Wert 97 in der ASCII-Tabelle und das Zeichen e hat den Wert 101. Durch Subtraktion von 101 - 97 = 4 erhalten Sie das Endergebnis.

mehr auf der ASCII-Tabelle kann here

+1

Danke ja das ist, was ich oben gefragt habe. Vielen Dank – simon

1

Das Zeichen 'a' hat den ASCII Dezimalwert 97.

Letters findet nach 'a' hat einen Dezimalwert größer 97.

Die Subtraktion

str[0] - 'a' 

verwendet die ASCII-Dezimalwerte, die die Buchstabenposition im Alphabet ergeben.

1
char e = 'e'; 
char a = 'a'; 
std::cout << "e = " << static_cast<int>(e) << std::endl; 
std::cout << "a = " << static_cast<int>(a) << std::endl; 

Computer haben solche abstrakten Dinge wie "Zeichen" nicht. Sie arbeiten nur mit 1 und 0 .. (Zahlen). Der Computer arbeitet mit einer Nummer, weiß aber, sobald er auf dem Bildschirm ausgedruckt wird, verwenden Sie die Grafik in einer .ttf-Datei, die dieses "Zeichen" darstellt.

2

char ist ein integraler Typ, so ist es implizit convertible (genauer gesagt, es erfährt integrale Förderung) int einzugeben. Jedes Zeichen, das Sie mit einem einfachen char darstellen können, hat einen numerischen Wert von 0-255 (oder -128 bis 127). Also sagt 'a' - '0' ist tatsächlich gültig, da es genauso ist wie 97 - 48 mit int s zu sagen.