memcmp() immer unsigned?
-
hi,
ihr kennt ja sicher: http://www.cplusplus.com/ref/cstring/memcmp.html
die schreiben da, dass der vergeich mit 'unsigned char' gemacht werden soll.
stimmt das? ist das irgendwo festgelegt? oder ist auch ein 'signed'-memcmp erlaubt?
-
im C99-Draft steht auch, dass der Vergleich mit unsigned char gemacht werden soll.
-
Was heißt hier gemacht werden soll? Darauf hast du doch gar keinen Einfluss, er WIRD unsigned gemacht. Ein signed memcmp müsstest du selber schreiben...
-
Signed Vergleich auf Kleiner oder Grösser ist NICHT sicher.
Signed Vergleich auf Gleichheit ist sicher.
Unsigned Vergleich auf Kleiner oder Grösser ist sicher.
Unsigned Vergleich auf Gleichheit ist sicher.Für den Vergleich von vorzeichenbehafteten Operanden gibt es in Assembler
besondere Bedingte-Sprungbefehle. memcmp() kann diese unmöglich
verwenden, denn dann wäre der < od. > -Vergleich bei unsigned falsch.
-
Molocko schrieb:
Was heißt hier gemacht werden soll? Darauf hast du doch gar keinen Einfluss, er WIRD unsigned gemacht.
Das "soll" ist selbstverständlich aus Sicht des Implementors von memcpy gemeint.
Helmut S. schrieb:
Signed Vergleich auf Kleiner oder Grösser ist NICHT sicher.
Wieso nicht?
Für den Vergleich von vorzeichenbehafteten Operanden gibt es in Assembler
besondere Bedingte-Sprungbefehle. memcmp() kann diese unmöglich
verwenden, denn dann wäre der < od. > -Vergleich bei unsigned falsch.Was hat Assembler damit zu tun? Abgesehen davon ist es trivial einsichtig, dass memcpy nur entweder für signed oder für unsigned korrekt sein kann.
-
Bashar schrieb:
Abgesehen davon ist es trivial einsichtig, dass memcpy nur entweder für signed oder für unsigned korrekt sein kann.
hi bashar,
im freescale board wollten die mir weismachen, dass die 'signed'-variante richtig ist. naja, euch können die nun mal nicht das wasser reichen
--> http://forums.freescale.com/freescale/board/message?board.id=CWCOMM&message.id=2804