PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Wert vorgeben (Konstante)


asterix2379
15.10.2004, 21:05
Hi Jungs,

ich mal ne bescheidene Frage.

Wie kann ich unter C, Y einen festene Wert vorgeben?
Das Y quasi meine Konstante ist. Also meinetwegen Y ist immer 200,1323 .
Ich will quasi mit Y als konstante Zahl weiterrechnen.

Hab leider noch kein Buch :-/

Novox
15.10.2004, 22:06
mittels Präprozessor

#define Y 200.1323

oder echte Konstante (gibt’s aber AFAIK nur in C++):

const float y = 200.1323;

asterix2379
16.10.2004, 01:04
Muß das in die { } geschweiften Klammern? Oder davor?

Hannnibal
16.10.2004, 02:06
Moin,

die defines sind vor der main...also am besten unter den includes :).

Aber nimm besser const bei der variablen vereinbarung (gibts schon in c...).
Also:
const int y=100;

mfg

asterix2379
16.10.2004, 11:08
@ Hannibal

Kommt das ( const int y=100; ) dann in die {} oder davor. ??? *buck*
Ich denk es kommt in die {} , oder ?! :)

i_hasser
16.10.2004, 11:17
Na kommt drauf an, ob die Konstante lokal oder global sein soll ;).

asterix2379
16.10.2004, 11:21
Jetzt erzähl mir noch den Unterschied zwischen Lokal und Global beim C programmieren ;D ;) *noahnung*

i_hasser
16.10.2004, 11:23
global -> alle Funktionen etc. können drauf zugreifen,
lokal -> nur die Funktion selbst kann drauf zugreifen.

asterix2379
16.10.2004, 11:59
Ich denke lokal reicht. Es handelt sich nämlich hierbei um ein Rechenprogramm. Ein ganz simples. Es rechnet einen Betrag in einen anderen um.
Hier mein Code.
Ich weiß nur nicht wie ich das mit dem Y Wert machen soll.Y=1,22. Bzw. wo ich das Y einbinden soll.
Die Ausgabe soll bis zwei Stellen hinter dem Komma erfolgen.




#include <stdio.h>
#include <conio.h>

float main(void)
{

printf("\n");
printf("\t\tUMRECHNUNGSPROGRAMM DOLLAR --> EURO\n");
float x;
printf("Wieviel Euro sind Dollar ?\n");
printf("\n\n");
printf("Bitte geben Sie den gewuenschten Dollarbetrag ein \n\n");
scanf("%.2f",&x);
printf("Dollar entsprechen %.2f"x,y,x*y);
printf("\n\n");
printf("Danke");
printf("Matrikel Nr: xxxxxxx\n");
printf("Name\n");

getch();
}

i_hasser
16.10.2004, 12:29
Na da kannst du es lokal machen. Du kannst den Wert aber auch direkt eingeben, steht ja nur 2mal da.

asterix2379
17.10.2004, 18:00
Also ich hab jetzt nochmal ein wenig rumprobiert, aber ich bekomms nicht hin *traurig*
Wenn ich meine exe erstellen lassen will, dann bring der Compiler die Fehlermeldung, dass er zu viel arguments hat. Ich werd die Zeile mal markieren <------
Was mach ich falsch? *noahnung*


#include <stdio.h>
#include <conio.h>
#define y 1,22

float main(void)
{

printf("\n");
printf("\t\tUMRECHNUNGSPROGRAMM DOLLAR --> EURO\n");
float x;
printf("Wieviel Euro sind Dollar ?\n");
printf("\n\n");
printf("Bitte geben Sie den gewuenschten Dollarbetrag ein \n\n");
scanf("%.2f",&x);
printf("Dollar entsprechen: %.2f", x, y, x*y); <------
printf("\n\n");
printf("Danke");
printf("Matrikel Nr: xxxxxxx\n");
printf("Name\n");

getch();
}

tes
17.10.2004, 18:07
hi asterix2379,

du hast einen platzhalter, gibst aber 3 argumente an.

printf("Dollar entsprechen: %.2f", x*y);

gruss tes

edit: und gleitkommawerte werden mit punkt in c dargestellt.
also: #define y 1.22
und macht die main-funktion mit dem rueckgabewert float keine probleme?

asterix2379
17.10.2004, 18:22
@ tes

Juhu es geht ;D *massa* danke schön

Zitat:
und macht die main-funktion mit dem rueckgabewert float keine probleme?
Ne wieso? Sollte es? Bin leider noch ziemlich unwissend :-/
Das mit dem . werd ich mir auch merken :)


#include <stdio.h>
#include <conio.h>
#define y 1.22

float main(void)
{

printf("\n");
printf("\t\tUMRECHNUNGSPROGRAMM DOLLAR --> EURO\n");
float x;
printf("Wieviel Euro sind Dollar ?\n");
printf("\n\n");
printf("Bitte geben Sie den gewuenschten Dollarbetrag ein \n\n");
scanf("%.2f",&x);
printf("Dollar entsprechen: %.2f * %.2f = %.2f", x, y, x*y); <-------------
printf("\n\n");
printf("Danke");
printf("Matrikel Nr: xxxxxxx\n");
printf("Name\n");

getch();
}

tes
17.10.2004, 19:10
hi asterix2379,

wenns dein compiler so frisst, is ja gut.
aber du gewoehnst dir hier schon was falsches an.
was das fuer auswirkungen haben kann, weiss ich nicht. aber vermutlich keine.

mit dev cpp laesst sich das so nicht kompilieren.
der debuger spuckt dann folgendes aus: `main' must return `int'

ms vc dagegen kompiliert das, wie dein kompiler, anstandslos.

der rueckgabewert der main-funktion signalisiert dem bs oder aufrufendem prozess,
das das programm beendet wurde.
wuerde hier eine pruefung des exit-codes gemacht, lieferst du bei programmende einen verfaelschten wert.

gruss tes

i_hasser
17.10.2004, 20:51
Original geschrieben von tes
hi asterix2379,

wenns dein compiler so frisst, is ja gut.
aber du gewoehnst dir hier schon was falsches an.
was das fuer auswirkungen haben kann, weiss ich nicht. aber vermutlich keine.

mit dev cpp laesst sich das so nicht kompilieren.
der debuger spuckt dann folgendes aus: `main' must return `int'

ms vc dagegen kompiliert das, wie dein kompiler, anstandslos.

der rueckgabewert der main-funktion signalisiert dem bs oder aufrufendem prozess,
das das programm beendet wurde.
wuerde hier eine pruefung des exit-codes gemacht, lieferst du bei programmende einen verfaelschten wert.

gruss tes

Das ist natürlich richtig... hat aber nix mit den Konstanten zu tun ;) (ist mir desswegen auch garnet aufgefallen, der GNU C Compiler beschwert sich da drüber, Dev-C++ benutzt auch nur den Mingw32, ein Win32 Port vom GCC).

asterix2379
17.10.2004, 21:31
Zitat:
mit dev cpp laesst sich das so nicht kompilieren.
der debuger spuckt dann folgendes aus: `main' must return `int'


wuerde hier eine pruefung des exit-codes gemacht, lieferst du bei programmende einen verfaelschten wert.

Was "Falsches" gewöhn ich mir an. Versteh leider nicht so ganz was an meinem Code faslch sein soll. :-[ Kannst Du mir das vielleicht ein wenig "verständlicher" erklären. Würde das nämlich schon gern wissen, um es in Zukunft richtig zu machen.
Thx :)

Ünrigens hab ich den lcc-win32 Compiler. :)

i_hasser
17.10.2004, 21:54
main() muss einen integer zurückgeben, weil wir es mit 'int main' deklariert haben.

Also muss jeder Programmpfad (if-Anweisung oder weis der Geier was) mit einem 'return xyz' enden, wobei xyz irgend ein Wert ist (0, sofern das Programm normal beendet wurde).

tes
17.10.2004, 22:12
hi asterix2379,

ich verweis nochmal auf die antwort in folgenden thread:
http://www.planet3dnow.de/vbulletin/showthread.php3?s=&threadid=184969 (http://www.planet3dnow.de/vbulletin/showthread.php3?s=&threadid=184969)

entweder eine main-funktion ohne parameter-liste:

int main(void)
{
//dein code

return 0;
}


oder eine main-funktion mit parameter-liste:

int main(int argc, char *argv[])
{
//dein code

return 0;
}


bei zweiter version uebergibt man beim start des programmes bestimmte startparameter,
die du auslesen kannst.
der erste parameter ist immer der pfad zu deiner datei.

es gibt auch noch die main-funktion ohne rueckgabewert, die aber bei dir ja nicht erlaubt ist.

void main(void)
{
//dein code

exit(0);
}


gruss tes

asterix2379
17.10.2004, 22:41
Also wenn ich das jetzt richtig verstanden habe, dann muß ich am Ende meines Codes
dieses
return 0;
einfügen und alles ist palleti ?! *duck* http://www.mysmilie.de/smilies/verschiedene/img/024.gif :)

@tes

Das hast Du mir ja schonmal erklärt.
Aber, jetzt versteh ich ,was Du damit gemeint hast. Ok.

i_hasser
17.10.2004, 22:53
Ja, ein return 0 macht die Sache korrekt.

tes
17.10.2004, 23:19
*juchu* :)



Copyright © 1999 - 2011 Planet 3DNow!
Rechtliche Hinweise