Kezdőoldal » Számítástechnika » Programozás » C nyelvben mi a különbség az...

C nyelvben mi a különbség az int main (), és a main () között?

Figyelt kérdés

kezdő vagyok, és ezt nem nagyon értem. :)

illetve ha a voidot is használjuk, az mit jelent?

int main(void)


köszönöm szépen a segítséget.



2015. ápr. 6. 14:05
1 2
 1/12 anonim ***** válasza:
41%
Google a barátod. Anélkül felejtsd is el a programozást. Főleg alapok nélkül.
2015. ápr. 6. 15:15
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
0%

C-ben a belépési pontot így kell megadni, kb. a programod innen indul (az előkészítési dolgokat leszámítva). A visszatérési érték kötelező, szóval nem értem mi az a main() magában.


[link]

2015. ápr. 6. 15:31
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
33%

A szabvány szerint (lásd a 13. oldalt: 5.1.2.2.1 Program startup):

[link]

a main függvénynek visszatérési értékének kell lenni, tehát a void main() és a szimpla main() nem megfelelőek (bár egyes fordítók megengedik).

2015. ápr. 6. 15:35
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:

C-ben lehet a belépési pont "int main(void)", "int main(int argc, char *argv[])", és ugyan a standard nem említi, de a példáiban használja, "int main()".

Visszatérési értéket érdemes adni, helyes lefutás esetén "return 0;". Ha a program eléri a main } jelét, automatikusan 0-val tér vissza amúgy.


A main() önmagában hibás! Minden függvénynél meg kell mondani milyen típusú értékkel tér vissza. Még ha nincs is visszatérési érték, akkor is oda kell írni hogy void:

void függvény() {}


C-ben a "függvény()" és a "függvény(void)" között csak a prototípus deklarációnál van különbség. A "függvény(void);" azt mondja meg, hogy a függvény nem vár paramétereket, míg a "függvény();"-nél a paraméterek definiálatlanok, azaz bármilyen paraméter definíciót lehet még adni neki. C++-ban nincs különbség köztük.


Függvény definíciónál a "függvény()" és a "függvény(void)" ugyan az, ezért lehet az "int main()"-t használni az "int main(void)" helyett, bár C-ben nem szerencsés paraméter (void) nélküli függvényekkel dolgozni, régi fordítók szólhatnak érte.


Összefoglalva, használd a következők egyikét:

int main(void) { }

int main(int argc, char *argv[]) { }


Mindig legyen a függvényeknél meghatározva a visszatérési érték típusa.


Ha nincs paramétere a függvények, akkor a paraméterben legyen odaírva hogy void, (bár ez manapság már nem kötelező).

2015. ápr. 6. 16:43
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
Mindig int main()-t használj, mert a folyamatnak vissza kell térnie egy exit code-dal, ami 0 esetén sikeres lefutás, 1 esetén általános, futás közbeni hibák, és vannak még egyéb kódok, a bash-nál például a 255, 130, stb.
2015. ápr. 6. 20:30
Hasznos számodra ez a válasz?
 6/12 iostream ***** válasza:
0%

Ti miről beszéltek? C-ben ha nem adsz meg típust azt implicit intnek hívjuk. Tehát a main az implicit int main lesz.

Az üres zárójel () meg azt jelenti, hogy variadikus paraméterek, tehát akárhány paramétert be lehet oda dúrni, ezért írják bele, hogy void.

2015. ápr. 7. 11:32
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:

Ha egy kezdő implicit int-eket akar használni, akkor biztos hogy megszívja (előbb-utóbb). Amúgy meg, ha 2015-ben is a 89-es ANSI szabványt tanítják neki gratulálok. Ez egy elavult megoldás, és nem összeegyeztethető az újabb szabványokkal. Tehát nincs olyan választás, hogy nem írom ki az int-et.


"C99 is for the most part backward compatible with C90, but is stricter in some ways; in particular, a declaration that lacks a type specifier no longer has int implicitly assumed."

[link]

2015. ápr. 7. 12:38
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:

iostream:


Nem írtam a válaszomhoz (#4), de feltételeztem hogy C99-ről van szó:


Az utolsó darft:

[link]


C99-ben nincs implicit int, de még ha lenne is, elég rossz programozási szokás használni. A draftban explicit le is írták hogy ki lett szedve ez.


Az üres zárójel csak prototípusnál jelent variadikus paraméterlistát, függvény definíciónál nem! Függvénydefiníciónál paraméter nélküli függvényt jelent. De ezt is leírtam már fentebb, és ez nem csak C99-ben van így.


Standardból idézve:

"An identifier list declares only the identifiers of the parameters of the function. An empty

list in a function declarator that is part of a definition of that function specifies that the

function has no parameters. The empty list in a function declarator that is not part of a

definition of that function specifies that no information about the number or types of the

parameters is supplied."

2015. ápr. 7. 13:34
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:

"Ti miről beszéltek?"

A szabványról.


"It shall be defined with a return type of int"

C99 (5.1.2.2.1 Program startup fejezet): [link]

2015. ápr. 7. 17:37
Hasznos számodra ez a válasz?
 10/12 iostream ***** válasza:

>"It shall be defined with a return type of int"


Az ugye megvan, hogy ez NEM mondja, hogy ki kell írni az intet, mert mint említettem, implicit int is van. Azért nem feltételezem default, hogy C99-ről lenne szó, mert az nem volt olyan egyértelműen elfogadott, vannak olyan fícsörjei, amik legalábbis vitathatóak, például a variable length array.

2015. ápr. 8. 13:05
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!