[C++] Conversion may lose significant digits

Mark031969

Grünschnabel
Hallo Forum,

ich nutze diese Programm:

//* CHARS in Großbuchstaben umwandeln
//-----------------------------------
char charupcase(char c)
{
if ((c>='a') && (c<='z'))
c=c+('A'-'a');
return c;
}


Wie kann ich erreichen, das beim kompilieren nicht immer die Warnung "Conversion may lose significant digits" erscheint?

MfG
Mark
 
moin


Bei mir wird die Warnung nciht angezeigt, aber vielleicht geht es so besser:
Code:
char charupcase(char c)
{
     if (((int)c>='a') && ((int)c<='z'))
          (int)c = (int)c + (int)('A'-'a');
     
     return c;
}

Du weisst aber das es sowas schon fertig gibt?!


mfg
umbrasaxum
 
>"toupper"
Danke funktioniert (war ja auch nichts anderes zu erwarten).

Aber ich hatte ja auch noch das Problem mit der Kompiler-Warnung (siehe Theard)


Sie tritt zB auch bei diesem Programmteil auf:
Code:
//STRINGS in Großbuchstaben umwandeln
//-----------------------------------
char *stringupcase(char *TEXT)
{
   unsigned int c;
   for (c=0; c<strlen(TEXT); c++)
   	{
         TEXT[ c]= toupper(TEXT[ c]);
      }
   return TEXT;
}

Wenn es hierfür auch einen fertigen Befehl gibt, wüsste ich ihn auch gerne.

Aber auch das deaktivieren von Kompiler-Warnunge interessiert mich.

MfG
Mark
 
Zuletzt bearbeitet von einem Moderator:
Bei mir funktionierts ohne Warnung.

Der Aufru der Funktion:
Code:
void main()
{
 char string[] = "hallo";
 
 printf("VORHER>\t\t%s\n",string);
 strcpy(string, stringupcase(string));
 printf("NACHHER>\t%s",string);
}

Vielleich aber auch nur weil ich es mit DEV C++ kompiliert hab.
 
Hallo,

Also wenn ich die Kompiler-Warnung anklicke, springt der Courser nach hier:
Code:
>TEXT[ c]= toupper(TEXT[ c]);

______^
 
Zurück