Anfängerfrage zu C++ (sizeof)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Anfängerfrage zu C++ (sizeof)

Beitrag von Duff » 01.11.2007 17:39:26

Hallo,

habe mal eine Frage zu einem kleinen C++-Programm (lese gerade das Buch C++ von A bis Z).
Dort ist dieses Beispiel hier angegeben, aber bei der Verwendung von sizeof kommte es beim Kompilieren bei mir immer zu folgender Fehlermeldung:

Code: Alles auswählen

daniel@daniel-laptop:~/scripts/C++$ g++ -Wall -o zarray2 zarray2.cpp
zarray2.cpp: In function 'int main()':
zarray2.cpp:9: warning: comparison between signed and unsigned integer expressions
zarray2.cpp:15: warning: comparison between signed and unsigned integer expressions
Das kleine Programm sieht so aus:

Code: Alles auswählen

daniel@daniel-laptop:~/scripts/C++$ cat zarray2.cpp
// zarray2.cpp
#include <iostream>
using namespace std;

int main(void) {
        int iarray[5];
        // iptr zeigt auf das erste Element von iarray
        int* iptr = iarray;
        for( int i=0; i<sizeof(iarray)/sizeof(iarray[0]); i++ ) {
        //for( int i=0; i<5; i++ ) {
                cout << "Bitte Wert eingeben: ";
                cin >> *iptr;
                iptr++; // nächstes Element
        }
        cout << "Die Werte lauten : \n";
        for( int i=0; i<sizeof(iarray)/sizeof(iarray[0]); i++ ) {
        //for( int i=0; i<5; i++ ) {
                cout << iarray[i] << "\n";
        }
        return 0;
}
Oh, yeah!

Benutzeravatar
armin
Beiträge: 2682
Registriert: 17.03.2005 11:49:14

Beitrag von armin » 01.11.2007 17:49:43

sizeof() liefert einen unsigned int zurück, in deiner Schleife nutzt du aber einen (signed) int.
Ersetzte einfach "int i" mit "unsigned int i" und die Warnung sollte verschwinden.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 01.11.2007 18:03:02

Ok, danke.

Habe irgendwie übersehen, dass es sich "lediglich" um Warnings handelt und das Kompilieren einer Datei namens zarray2 doch funktioniert.

Sorry.
Oh, yeah!

Antworten