Der Martin: 001 = 1 und password_hash

Beitrag lesen

Hallo,

Weil der Operator '==' die automatische Typanpassung anweist

aber wenn beide Operanden den gleichen Typ haben, ist eigentlich gar keine Anpassung nötig. Dass doch eine stattfindet, lässt nur einen Schluss zu: Der Vergleichsoperator == ist für Strings nicht definiert.

Das wiederum würde aber heißen, dass Strings beim typfreien Vergleich immer in Zahlen konvertiert werden müssten, ergo müsste auch "aa"=="bb" sein, weil beide Strings zu 0 konvertieren. Das ist aber auch nicht der Fall! Ich muss ehrlich zugeben, dass ich die Logik dahinter nicht begreife.

Es scheint so, als würde die Konvertierung zu int immer dann durchgeführt, wenn sie fehlerfrei möglich ist. Mit Logik, wie ich sie verstehe, hat das aber nicht mehr viel zu tun.

Als eingefleischter C-Programmierer ist mir diese Problematik (zum Glück) bisher nie aufgefallen, weil ich beim Stringvergleich "instinktiv" strcmp() verwende.

Darum sage ich ja immer: PHP hätte in Turbo-Pascal geschrieben werden sollen. Dann gäbe es diese Besonderheiten nicht!

In welcher Sprache Murks geschrieben wird, ist völlig egal - auch in einer sehr streng reglementierten Sprache wie Pascal kann man Programme schreiben, die Mist machen.

C ist einfach Sch....e

Ich finde C vom Grundsatz her prima - eine sehr flexible Sprache mit wenigen Beschränkungen. Im Gegensatz zu PHP weiß man als Programmierer aber von vornherein, dass man auf jedes Detail selbst achten muss, und in C gibt es keine "Magie" im Hintergrund.

Schönes Wochenende,
 Martin

--
Ich verdanke meinen Eltern so viel - besonders meiner Mutter und meinem Vater.
  (Dakota Fanning, US-Nachwuchsschauspielerin)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(