Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » signed bzw. unsigned

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.04.2004, 10:11 Uhr
~tabaluga
Gast


woran kann es liegen, dass es einen Konflikt zwischen signed und unsigned gibt? Es ergibt zwar keinen Compilierfehler, aber immerhin 2 Warnungen und zwar folgende Warnung:

C++:
Kompilierung läuft...
programm.cpp
D:\programm.cpp(210) : warning C4018: '<' : Konflikt zwischen signed und unsigned
D:\programm.cpp(253) : warning C4018: '==' : Konflikt zwischen signed und unsigned

programm.obj - 0 Fehler, 2 Warnung(en)



Und das sind die besagten Zeilen:(210 & 253)

C++:
//210:
for(i=0;i<(strlen(StrTest[1]));i++)

//253:
if( (strlen(out)) == counter)


Dieser Post wurde am 28.04.2004 um 10:12 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.04.2004, 10:15 Uhr
Pablo
Supertux
(Operator)


Du sagst es gerade, signed und unsigned.

Eine unsigned int variable ist eine Variable von typ int, die aber kein Vorzeichen hat, sprich, sie kann keine negativen Zahlen speichern.

strlen ist von type size_t, wenn ich mich nicht irre, und size_t ist unsigned int. count muss dann int sein.

Die Warunung ist überflüssig, wenn beide Variablen positiv sind, aber es kann zu Probleme führen, wenn du negative Werte mit einem unsigned int vergleichen willst.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.04.2004, 13:22 Uhr
ao

(Operator)


Ein Beispiel, das genau diesen Effekt vorführt:


C++:
#include <stdio.h>

/* VC++: Warninglevel 4 einstellen, um die Warnungsmeldung zu sehen (-Wall fuer gcc-Leute). */
#pragma warning (push, 4)

int main (void)
{
    int i = -1;
    unsigned int u = 1;
    printf ("\n%d ist %s als %d\n", i, (i < u) ? "kleiner" : "groesser", u); /* hier staunen */
    return 0;
}



ao

Dieser Post wurde am 28.04.2004 um 13:23 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: