|
You last visited: Today at 12:21
Advertisement
Unterschied String und Integer
Discussion on Unterschied String und Integer within the .NET Languages forum part of the Coders Den category.
07/14/2015, 19:30
|
#1
|
elite*gold: 190
Join Date: Aug 2011
Posts: 8,445
Received Thanks: 1,124
|
Unterschied String und Integer
Hey Leute,
ich bin grad dabei VB zu lernen und bin noch komplett am Anfang. Ich lerne mit einem Buch und da war die Aufgabe mit Variablen die Adresse in ein Label einzufügen. Ich hab es mit Integer probiert, aber das hat nicht funktioniert, weil Integer soweit ich weiß nur für Zahlen ist. Dann hab ich String benutzt und da kann ich Zahlen + Buchstaben verwenden..? Wieso sollte ich dann überhaupt Integer jemals benutzen?
Ich weiß für die erfahrenen Programmierer unter euch klingt das bestimmt total behindert, aber ich verstehe es grad echt nicht.
|
|
|
07/14/2015, 20:27
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Der Grund warum du Integer verwenden solltest ist um damit rechnen zu können.
Der + Operator ist bei Integern anders als bei Strings.
Bei Strings würden die Strings aneinander gekettet werden: "123" + "456" = "123456"
Bei Integer hingegen würden die Zahlen addiert werden: 123 + 456 = 579.
|
|
|
07/14/2015, 23:43
|
#3
|
elite*gold: 190
Join Date: Aug 2011
Posts: 8,445
Received Thanks: 1,124
|
Quote:
Originally Posted by alpines
Der Grund warum du Integer verwenden solltest ist um damit rechnen zu können.
Der + Operator ist bei Integern anders als bei Strings.
Bei Strings würden die Strings aneinander gekettet werden: "123" + "456" = "123456"
Bei Integer hingegen würden die Zahlen addiert werden: 123 + 456 = 579.
|
Danke dir schon mal für die Antwort, aber anscheinend ist das nicht ganz richtig?
Quote:
Originally Posted by シノン
In VB.net leider nicht ganz 
|
Erklär mir doch bitte wie es in VB.net ist
|
|
|
07/15/2015, 00:48
|
#4
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by OCB1977
Erklär mir doch bitte wie es in VB.net ist 
|
in VB lässt der compiler und der debugger ziemlich viel müll im code zu.
Das ist so weil der compiler einfach mal vermutet was du eigentlich machen wolltest.
(Weiß nicht genau ob es so krass ist, kann mich da auch irren)
Dim zahl As Integer = "123" funktioniert deshalb
Dim wort As String = 1 + 2 +3 ergibt also 6
Um das zu vermeiden solltest du Option strict und explicit auf ON stellen.
Dadurch erhöhst du die lesbarkeit des codes und vermeidest fehler von dir oder dem compiler
|
|
|
07/15/2015, 02:20
|
#5
|
elite*gold: 0
Join Date: Jul 2010
Posts: 182
Received Thanks: 185
|
Quote:
Originally Posted by OCB1977
Erklär mir doch bitte wie es in VB.net ist 
|
Vergiss was ich geschrieben habe, war ein Irrtum
|
|
|
07/15/2015, 09:58
|
#6
|
elite*gold: 0
Join Date: Jul 2015
Posts: 159
Received Thanks: 71
|
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
|
|
|
07/15/2015, 15:12
|
#7
|
elite*gold: 26
Join Date: Dec 2010
Posts: 2,628
Received Thanks: 1,816
|
Quote:
Originally Posted by Yothri
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
|
Und wieso ist die C# Syntax gleich besser?
Mir gefällt die C# Syntax auch besser aber man kann das nicht verallgemeinern
|
|
|
07/15/2015, 17:46
|
#8
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Ich würde alleine schon wegen der Speichergröße keinen String für Integer benutzen.
"2147483647" => 10 Bytes
2147483647 => 4 Bytes
"9223372036854775807" => 19 Bytes
9223372036854775807 => 8 Bytes
Mal abgesehen von der ständigen Casterei wenn man dann mal 2 Werte zusammen rechnen müsste.
|
|
|
07/15/2015, 18:20
|
#9
|
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
|
Quote:
Originally Posted by Mostey
Ich würde alleine schon wegen der Speichergröße keinen String für Integer benutzen.
"2147483647" => 10 Bytes
2147483647 => 4 Bytes
"9223372036854775807" => 19 Bytes
9223372036854775807 => 8 Bytes
Mal abgesehen von der ständigen Casterei wenn man dann mal 2 Werte zusammen rechnen müsste.
|
Und "1" = 1 Byte und 1 = 4 Byte
Spaß bei Seite und zurück zum Thread.
String ist ein Datentyp zum Darstellen von Informationen als Lesbarer Text, zum Modellieren und Bearbeiten von Daten eher ungeeignet. Allein Operationen auf Strings (z.B. die Länge von einem String rausfinden) haben einen Linearen Zeitaufwand mit der Länge des Strings.
Dann kann man mit Strings einige dinge schlicht weg nicht machen, z.B. Rechnen nehmen wir die Zahlen 1 und 2
9 als String ist ein Array mit einem Element (57) und 1 Als String ist 49
Also Integer sind diese informationen jeweils 9(1001) und 1(0001)
Die Addition von 9 und 1 = 10 die Arithmetische addition von 57 und 49 wäre 106 und damit das zeichen "j".
Man kann zwar Strings in Integer und Umgekehrt umwandeln, dass sind aber dann auch recht große funktionen, welche viel leistung fressen.
Außerdem wie Mostey bereits geschrieben hat verbraten Strings pro Zeichen ein Byte (+1 Byte für den Zeiger +1 Byte für das 0 Byte, bei WideStrings sogar 2 Bytes pro zeichen) und dass nur bei Optimaler Speichernutzung für gewöhnlich ist die Kapazität eines Dynamischen Arrays größer als dessen Länge, damit man nicht für jedes element den Speicher neu allozieren muss.
Prinzipiell kann man sagen dass Strings für alles was nicht zur Darstellung, also für von Menschen gelesene Daten sind, der Denkbar schlechteste Datentyp ist.
Edit:
Quote:
|
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
|
Nun ich denke es gibt kaum ein Argument was eher für eine der beiden Sprachen spricht, das ist alles schlicht weg Präferenz.
Ich zum Beispiel kann die C Syntax überhaupt nicht leiden, und nutze sprachen wie C oder Java nur wenn es nötig ist.
Und Option Strict ist eher ein Vorteil von VB denn VB gibt die Möglichkeit mit und Ohne zu arbeiten, während c# immer gleich strikt ist
|
|
|
07/15/2015, 18:38
|
#10
|
elite*gold: 0
Join Date: Jul 2010
Posts: 182
Received Thanks: 185
|
Quote:
Originally Posted by Mostey
"2147483647" => 10 Bytes
|
Sind chars in .net nicht sogar 2 Bytes groß?
|
|
|
07/15/2015, 19:53
|
#11
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,409
|
Quote:
|
Und wieso ist die C# Syntax gleich besser?
|
Leichterer Umstieg auf andere Sprachen mit C-Syntax. Und das sind viele.
Quote:
Originally Posted by OCB1977
Hey Leute,
ich bin grad dabei VB zu lernen und bin noch komplett am Anfang. Ich lerne mit einem Buch und da war die Aufgabe mit Variablen die Adresse in ein Label einzufügen. Ich hab es mit Integer probiert, aber das hat nicht funktioniert, weil Integer soweit ich weiß nur für Zahlen ist. Dann hab ich String benutzt und da kann ich Zahlen + Buchstaben verwenden..? Wieso sollte ich dann überhaupt Integer jemals benutzen?
Ich weiß für die erfahrenen Programmierer unter euch klingt das bestimmt total behindert, aber ich verstehe es grad echt nicht.
|
Ganz einfach ausgedrückt:
Strings sind eben nicht für Zahlen und Buchstaben, sondern für Zeichen. Für den PC ist eine Zahl nicht gleich einer Aneinanderreihung von Zeichen. Mit Zahlen rechnest du, mit Zeichenketten speicherst du für Menschen lesbare Informationen. Dazu können auch die Zeichendarstellungen von Zahlen gehören, wenn man dem Menschen z.B. eine Zahl anzeigen will, aber das macht den String "123" nicht direkt zur Zahl. Du kannst damit nicht (direkt) rechnen, es wird ineffizienter gespeichert und man kann Zeichenketten auf unterschiedliche Weise im Speicher darstellen, was in manchen Fällen zusätzlichen Konvertierungsaufwand benötigt. Eine Zahl ist im Speicher immer* gleich.
*Auf niedrigem Level nicht ganz korrekt, aber auf dem Abstraktionslevel, auf dem man sich mit .NET Sprachen befindet, ist das irrelevant.
|
|
|
07/15/2015, 21:12
|
#12
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by シノン
Sind chars in .net nicht sogar 2 Bytes groß?
|
Wo hast du das denn gelesen?
Edit:
Ok, habe ich auch nicht gewusst. Scheint wohl aber nur bei .NET so zu sein, dann trifft meine Antwort eher auf die restlichen Sprachen zu.
|
|
|
07/16/2015, 11:40
|
#13
|
elite*gold: 26
Join Date: Dec 2010
Posts: 2,628
Received Thanks: 1,816
|
Quote:
Originally Posted by MrSm!th
Leichterer Umstieg auf andere Sprachen mit C-Syntax. Und das sind viele.
Ganz einfach ausgedrückt:
Strings sind eben nicht für Zahlen und Buchstaben, sondern für Zeichen. Für den PC ist eine Zahl nicht gleich einer Aneinanderreihung von Zeichen. Mit Zahlen rechnest du, mit Zeichenketten speicherst du für Menschen lesbare Informationen. Dazu können auch die Zeichendarstellungen von Zahlen gehören, wenn man dem Menschen z.B. eine Zahl anzeigen will, aber das macht den String "123" nicht direkt zur Zahl. Du kannst damit nicht (direkt) rechnen, es wird ineffizienter gespeichert und man kann Zeichenketten auf unterschiedliche Weise im Speicher darstellen, was in manchen Fällen zusätzlichen Konvertierungsaufwand benötigt. Eine Zahl ist im Speicher immer* gleich.
*Auf niedrigem Level nicht ganz korrekt, aber auf dem Abstraktionslevel, auf dem man sich mit .NET Sprachen befindet, ist das irrelevant.
|
Ich denke mal in einer Woche hat man recht gut umgelernt was die Syntax betrifft. Wenn man mal eine Sprache mit C Syntax lernen will
|
|
|
07/16/2015, 12:02
|
#14
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,409
|
Quote:
Originally Posted by Mostey
Wo hast du das denn gelesen?
Edit:
Ok, habe ich auch nicht gewusst. Scheint wohl aber nur bei .NET so zu sein, dann trifft meine Antwort eher auf die restlichen Sprachen zu.
|
Welche restlichen Sprachen sollen das sein? Die meisten modernen Sprachen bringen von Haus aus Unicode Strings mit. Eine Unterscheidung wie bei C/C++ ist eher die Seltenheit.
Quote:
Originally Posted by stotterer09
Ich denke mal in einer Woche hat man recht gut umgelernt was die Syntax betrifft. Wenn man mal eine Sprache mit C Syntax lernen will
|
Mag sein, es gibt aber einfach kein überzeugendes Argument für VB.NET. Das ist eine Sprache, die dazu diente, alte VB Entwickler für .NET zu begeistern. Ich sehe echt keinen Sinn darin, mit dieser Sprache anzufangen, zumal es mit den Altlasten aus VB auch noch diverse Fallstricke gibt.
|
|
|
07/18/2015, 03:10
|
#15
|
elite*gold: 15
Join Date: Feb 2013
Posts: 2,880
Received Thanks: 465
|
Quote:
Originally Posted by MrSm!th
Welche restlichen Sprachen sollen das sein? Die meisten modernen Sprachen bringen von Haus aus Unicode Strings mit. Eine Unterscheidung wie bei C/C++ ist eher die Seltenheit.
Mag sein, es gibt aber einfach kein überzeugendes Argument für VB.NET. Das ist eine Sprache, die dazu diente, alte VB Entwickler für .NET zu begeistern. Ich sehe echt keinen Sinn darin, mit dieser Sprache anzufangen, zumal es mit den Altlasten aus VB auch noch diverse Fallstricke gibt.
|
Ich habe mit VB angefangen und habe mit dann für die Unity Engine interessiert... Da das nur mit C# geht habe ich mich damit weiter gemacht wobei VB ne gute Grundlage war (Da man ein 'leichtes' "Gefühl" dafür kriegt)
C# hatte ich dann nach 2 tagen drinn und konnte mit Unity weiter machen
Mittlerweile versuche ich mich mit ein paar Freunden an der Unreal Engine und lerne auch ein 'bisschen' C++.
Du musst halt gucken was brauchst du / was willst du machen? (Was gefällt dir?)
->>>>> Wenn im string nur zahlen sind [50+50] kommen trotzdem 100 raus
|
|
|
 |
|
Similar Threads
|
Convert string to integer, Frage...
08/10/2012 - C/C++ - 3 Replies
Hallo,
also, es geht um zwei Codes. Beide sollen einen String in eine Zahl umwandeln.
Um zu zeigen worum es genau geht, hier der funktionierende Code:
#include <iostream>
#include <string>
#include <sstream>
int main ()
{
std::string age;
|
[Visual Basic] [Problem] String auslesen/String zufällig wählen
05/06/2012 - General Coding - 4 Replies
Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Name Generator", 236, 299, 815, 246)
$Input1 = GUICtrlCreateInput("Username", 24, 72, 185, 21)
$Input2 = GUICtrlCreateInput("Username", 24, 104, 185, 21)
$Input3 = GUICtrlCreateInput("Username", 24, 136, 185, 21)
$Input4 = GUICtrlCreateInput("Username", 24, 168, 185, 21)
$Input5 = GUICtrlCreateInput("Username", 24, 200, 185, 21)
|
c++ WinApi integer ausgeben
11/26/2011 - C/C++ - 8 Replies
Hay, also ich bin nun neu in der WinApi mit c++ und versuche mich grad an einem einfachen Rechner(ohne WinApi natürlich kein Problem).
Wie im Titel steht schaffe ich es nicht per "TextOut" oder per "MessageBox"
einen integer ausgeben zu lassen.
Ich hab schon gegooglet etc. bloß bin ich daraus nicht sehr viel schlauer geworden.
Bis jetzt hab ich halt das(Ausschnitt):
...
|
[VB08]String in String mit mehreren Funden
08/08/2011 - .NET Languages - 6 Replies
Hey,
bin gerade auf ein Problem gestoßen, an dem ich mir seit 3 Stunden die Zähne ausbeiße.
Ich will eine Funktion schreiben, die der _StringBetween Funktion von AutoIt gleich ist. _StringBetween gibt in einem Array alle Strings zwischen zwei SubStrings und dem ganzen String aus. Die Ausgabe bei
_StringBetween("<h1>test1</h1>&l t;h1>test2</h1>", "<h1>", "</h1>") wäre also idealer Weiße ein Array (x = "test1", x = "test2")...
da man in VB08 kein Array returnen kann, komme ich aber einfach...
|
All times are GMT +1. The time now is 12:22.
|
|