Frage zu Integer unter verschieden P-Sprachen

Henne

Well-known member
ID: 51568
L
28 Mai 2006
130
7
Naja ob es ne Frage ist, aber egal:
Hatte heute praktische Prüfung zum ITA(Haut mich nicht, ich weiß der Berufsabschluss bringt nichts.). Naja wir sollten was zusammenlöten und dann das Ding auswerten.
So ich saß eine volle Stunde an einer einfachen Dezimal in Dual Umrechnung!
Das Problem war einfach, dass ich beim Dividieren vergessen hab abzurunden, weil ich dachte bei Integer wird der Rest einfach abgeschnitten wie bei PHP auch.
Naja Beispiel:
Code:
Dim blubb as Integer
blubb = 5 / 2
da kommt ja 2,5 raus und VB machte mir daraus immer 3(schlaues VB rundet ja auf. :evil:).
Bei PHP, C, C++ kommt da aber 2 raus, so wie ich es erwartet hab.

Naja nun meine Frage wie sieht das mit anderen Programmiersprachen aus? Oder hat sich da Microsoft wieder was eigenes ausgedacht?

Naja bin aber fertig geworden ;).

Henne

PS.:
Naja eigentlich ist der Thread nur dafür da um meine Wut über VB und mich rauszulassen.
 
Zuletzt bearbeitet:
Hm... ich hab zwar kein VB6 zur Hand aber in VB .Net kommt 2 raus, ebenso in VBScript (mit cint). Daher verwundert es mich eigentlich, dass es in VB6 anders sein soll. Bist du dir ganz sicher, dass es bei dir anders war? Ich probier das mal morgen aus ^_^.
 
VB - wie der Name schon sagt - is für Anfänger, die nix mit Hardware zu tun haben wollen und einfach drauflos schreiben wollen.

C/C++ is hardware-nah, d.h. wenn du dort auf einem 32bit-Prozessor den Wort (int)(float)2.5 ablegst, dann schnibbelt der Compiler einfach hinter dem Komma ab.
Orientier dich nicht unbedingt an Basic :biggrin:

Grundsätzlich solltest du dir für jede Programmiersprache Syntax und Semantik der Operatoren durchlesen, weil das u.U. jede Sprache anders handhabt.

P.S. VB6 liefert mir auch den Wert 2 ;)
 
Hmm da fällt mir gerade ein. Der Variabel Typ war nicht Integer, sondern Byte. Wo da der genau Unterschied ist weiß ich nicht.
Naja so in etwa hatte ich es in der Prüfung:
Code:
Dim tmp As Byte
Dim x As Integer
Dim read(7) as Boolean
tmp = 233
For x = 7 To 0 Step -1
  read(x) = tmp Mod 2
  tmp = tmp / 2
Next x
Die 233 kommt von meiner Platine.

So das ging nicht, weil ich das hier schreiben hätte müssen:
Code:
tmp = Int (tmp / 2)

Naja lag dann wohl doch eher an mir, aber es ist ja meistens so das einem die einfachsten Dinge dann nicht mehr einfallen.

Wen es interessiert es ging bei uns um I²C und wir sollten mit dem Computer über die Serielle Schnittstelle eine Platine auslesen und steuern. Die Platine hat eine 7-Segment Anzeige, 2 LEDs und zwei Schalter. Das Programm sollte so eine "Freie Parkplätze"-Steuerung sein. Leider dürfen wir das Ding ja nicht mitnehmen :(.
habt ihr schon mal was Hardware Technisch entwickelt und es an euren PC angeschlossen? Ich hab ja mal über nen Temperatur Messgerät nachgedacht, aber zur Zeit kein Geld für sowas über.

Henne
 
Delphi:

PHP:
procedure TForm1.FormCreate(Sender: TObject);
begin
  showmessage(inttostr(5 div 2));
end;

ergebniss: 2 :-?
 
ähm, was ist denn byte 233? mir ist gerade unklar, wie man eine zahl einem byte zuordnet.
 
So das ging nicht, weil ich das hier schreiben hätte müssen:
Code:
tmp = Int (tmp / 2)
Ich hab den Binär-Wandler gerade ausprobiert.
VB6 macht Ärger bei der Rechnung 7/2, die merkwürdigerweise 4 ergibt. 9/2 ergibt auch 4 und 5/2 ergibt wieder 2. Deshalb der Int()-Aufruf, um sicher abzurunden. Rundest du nicht ab, würde dein Algorithmus nicht funktionieren.
ähm, was ist denn byte 233? mir ist gerade unklar, wie man eine zahl einem byte zuordnet.
Typ Byte entspricht unsigned char, also einem 8bit-Integer. In VB sind die Typen grundsätzlich signed, der Byte-Datentyp bildet die Ausnahme.