[ Salgeras @ 28.08.2004. 17:06 ] @
Skoro sam poceo da ucim C++, ne ide mi lose, ali sam ipak naisao na par nejasnoca pa bih molio ako neko moze da mi malo pojasni:

U cemu je razlika (kada se koja koristi) izmedju "int main()" i "void main()" i uz koju se od ovih naredbi koristi i "return 0;"?

Za sta se koristi "char" a za sta "bool"?

Koja je razlika izmedju "cin.get" i "cin.getline"?

Eto toliko. Za sada je dovoljno

Unapred se zahvaljujem na bilo kojem odgovoru!!

Pozdrav svima,
Salgeras
[ Ramirez @ 28.08.2004. 18:07 ] @
pa int main() koristis kada ti main vraca neku vrednost ... i tu se koristi return 0 (to je default vrednost koja obicno govori da se program izvrsio bez gresaka) a void se koristi kada funkcija ne vraca vrednost, bar ne na taj nacin....

char je znakovni tip podataka, znaci slova. a bool je logicki... ima samo dve vrednosti TRUE i FALSE ....
[ filmil @ 28.08.2004. 19:50 ] @
Citat:
pa int main() koristis kada ti main vraca neku vrednost ... i tu se koristi return 0 (to je default
Ovde Standard (kog sam se konačno dokopao) lepo kaže da main sme da bude samo int main(). Sve ostalo nije po standardnu i ne treba koristiti.

Dakle da ponovim. Samo int main je ispravno.

f
[ Koljenovic @ 28.08.2004. 22:29 ] @
Koga interesuje standard evo link, isti link i mnostvo drugih imate objavljen u jednoj od TOP tema (Besplatna literatura o C i C++ na NET-u) :

http://anatolix.naumen.ru/cppbooks.htm
[ filmil @ 30.08.2004. 08:58 ] @
1. Odgovorih već da je ispravno samo int main. Ako negde naiđeš na void main, to nije ispravno. A pošto smo se složili da main mora da vrati int, na kraju mora da postoji neko return. return 0 je u redu ako želiš da vratiš izlazni kod 0, ali return 1, return -1 ili kako već takođe su mogući, zavisno od tvoje namere.

2. char je osnovni tip u C-u i C++u. Iako mislim da nije čvrsto propisano standardom, char je 8-bitni i može prema tome da sadrži 256 različitih vrednosti. bool tip je najpre uveden u C++ i ima dve moguće vrednosti: true i false. Mala nedoumica nastaje zato što je tip bool uveden relativno nedavno u C++ dok se pre toga rašireno koristio char ili int za istu svrhu. Mnogi i dalje ne odustaju od te prakse. IMHO je bolje prihvatiti „novu“ praksu; na kraju krajeva, nije ni baš tako nova.

3. Za razlike između istream::get i istream::getline, pogledaj na primer ovde.

f
[ Dragi Tata @ 30.08.2004. 13:14 ] @
Citat:
filmil: Iako mislim da nije čvrsto propisano standardom, char je 8-bitni


Standardom je propisano da je char 1 bajt. Međutim, C++ standard ne definiše koliko bitova ima u bajtu (tj razlikuje pojmove oktet i bajt), tako da na nekim platformama char nije 8-bitni. Kažu da je na Cray mašinama 1 bajt 32 bita.
[ filmil @ 30.08.2004. 13:33 ] @
Evo dakle isto to, samo malo preciznije (ISO C++, od. 5.3.1 Basic Types, str. 53)

Citat:
Objects declared as characters (char) shall be large enough to store
any member of the implementation's basic character set. If a character
from this set is stored in a character object, the integral value of
that character object is equal to the value of the single character
literal form of that character. It is implementationdefined whether a
char object can hold negative values. Characters can be explicitly
declared unsigned or signed. Plain char, signed char, and unsigned
char are three distinct types. A char, a signed char, and an unsigned
char occupy the same amount of storage and have the same alignment
requirements (3.9); that is, they have the same object
representation. For character types, all bits of the object
representation participate in the value representation. For unsigned
character types, all possible bit patterns of the value representation
represent numbers. These requirements do not hold for other types. In
any particular implementation, a plain char object can take on either
the same values as a signed char or an unsigned char; which one is
implementation-defined.

[ Salgeras @ 30.08.2004. 15:37 ] @
Hvala svima na ovome!!

Imam jos jedan problem...
Kada napisem neki zadatak i pokrenem ga u samom programu, on radi kako treba. Ali kad taj isti program pokrenem sa harda, tj. kad krene izvrsenje, on se prekine.

Npr. napisao sam prog. koji uporedjuje 2 broja. Pokrenem sa harda (*.exe), upisem brojeve, sve OK. Ali kad krene da izvrsava naredbu jednostavno se zatvori, "pukne".

Da li neko moze da mi pomogne oko ovoga?

Hvala i pozdrav svima!!
[ Koljenovic @ 30.08.2004. 16:06 ] @
Postoji takodjer i WCHAR_T za podrsku nekim viseznakovnim jezicima (Kineski, Japanski...), mozda je covjek mislio na to.

Za pokretanje programa u konzoli kucaj :

"Win dugme + R" ili otvori "Start :: Run", u TextBox kucaj "cmd" ili "command" ukoliko imas neki OS koji nije zasnovan na NT jezgri, otidji u direktorij u kojem ti se nalazi izvrsna datoteka i ukucaj njeno ime.
[ leka @ 30.08.2004. 19:40 ] @
Hehe, Nemanja, hoces reci da je char zapravo 32bitan na Cray-u? - Tako i treba, onda bi wchar_t i char bili isto i svi mirni i zadovoljni. :) Jedino se postavlja pitanje enkodinga kasnije, posto je zbog portabilnosti ipak bolje/lakse koristiti UTF8.
[ Dragi Tata @ 30.08.2004. 20:00 ] @
Citat:
leka: Hehe, Nemanja, hoces reci da je char zapravo 32bitan na Cray-u?


Zakleo bih se da sam ovo pročitao na jednoj diskusiji na comp.lang.c++.moderated, ali sad ne mogu da ga nađem. Može biti da sam nešto "prezupčio", ali ostaje činjenica da char ne mora da bude 8 bita.
[ mmirilovic @ 30.08.2004. 22:11 ] @
Prema C++ FAQ (http://www.parashift.com/c++-faq-lite):
Sekcija 26.1:
char je uvek 1 bajt.

Sekcija 26.4:
Standard garantuje da C++ bajt ima najmanje 8 bita. A može imati i više, u
zavisnosti od implementacije i platforme.

Dakle, char je uvek 1 bajt, a taj bajt može imati 8 ili više bitova...
[ Zevs85 @ 31.08.2004. 00:01 ] @
Sizeof operator!
Code:
#include <iosream.h>
int main ()
{
    cout << "char   size = " << sizeof(char) << " bytes\n";
    cout << "char*  size = " << sizeof(char*) << " bytes\n";
    cout << "short  size = " << sizeof(short) << " bytes\n";
    cout << "int    size = " << sizeof(int) << " bytes\n";
    cout << "long   size = " << sizeof(long) << " bytes\n";
    cout << "float  size = " << sizeof(float) << " bytes\n";
    cout << "double size = " << sizeof(double) << " bytes\n";
return (0);
}


kod mene su vrednosti:
char   size = 1 bytes
char*  size = 2 bytes
short  size = 2 bytes
int    size = 2 bytes
long   size = 4 bytes
float  size = 4 bytes
double size = 8 bytes


Posto sam i ja jedan od apsolutnih pocetnika vezacu se na ovu temu! Kojom funkcijom da izbrisem sve prethodno, nesto kao sto je u pascalu "ClrSCR"...?
[ caboom @ 31.08.2004. 07:20 ] @
Citat:
Dragi Tata: Zakleo bih se da sam ovo pročitao na jednoj diskusiji na comp.lang.c++.moderated, ali sad ne mogu da ga nađem. Može biti da sam nešto "prezupčio", ali ostaje činjenica da char ne mora da bude 8 bita.


nisi prezubcio, samo si pazljivo citao:
Citat:
While most compilers typically use an 8 bit char, Stroustrup (C++ Programming Language, 3rd ed., pg 74) notes that there are machines with 32 bit chars.


dakle, nije deplasirano koristiti sizeof(char)... osim u cowboy coding tehnikama.
[ blaza @ 31.08.2004. 08:20 ] @
sizeof([[un]signed] char) je uvek 1, bez obzira na to koliko bita sadrzi jedan bajt.
[ filmil @ 31.08.2004. 08:25 ] @
I posle se ljudi pitaju otkud toliko zadovoljstvo u radu u C++-u. Eto odakle: mora da se tumači ko biblija.

f
[ idb @ 31.08.2004. 08:37 ] @
Citat:
Zevs85: Posto sam i ja jedan od apsolutnih pocetnika vezacu se na ovu temu! Kojom funkcijom da izbrisem sve prethodno, nesto kao sto je u pascalu "ClrSCR"...?

Za Windows: system("cls");
[ caboom @ 31.08.2004. 08:46 ] @
Citat:
blaza: sizeof([[un]signed] char) je uvek 1, bez obzira na to koliko bita sadrzi jedan bajt.


hmm... cuo sam za 12 bitne slabove, ali nisam cuo za 36-to bitne bajtove. da li si siguran u to? ovo nema veze sa standardima, vec sa egzoticnim arhitekturama, pogotovo sto istorija ide i pre 1998-me godine.
[ blaza @ 31.08.2004. 09:39 ] @
Po Standardu (ISO/IEC 14882 1998-09-01):
Citat:

5.3.3 Sizeof
1
The sizeof operator yields the number of bytes in the object representation of its operand. The operand...
...sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1; the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.

Zali se cika Bjorneu :)
[ filmil @ 31.08.2004. 09:53 ] @
Citat:
 pogotovo sto istorija ide i pre 1998-me godine.
C i C++ i jesu komplikovani koliko jesu baš zato što se konstantno bore s duhovima.

f
[ srki @ 31.08.2004. 09:59 ] @
Citat:
caboom: hmm... cuo sam za 12 bitne slabove, ali nisam cuo za 36-to bitne bajtove.


36 bits forever!

http://www.36bit.org/

takodje sa http://en.wikipedia.org/wiki/Byte
Citat:
A contiguous sequence of a fixed number of bits. On modern computers, an eight-bit byte or octet is by far the most common. Certain older models have used six-, seven-, or nine-bit bytes -- for instance on the 36-bit architecture of the PDP-10. Another example of a non eight-bit sequence is the 12-bit slab of the NCR-315. A byte is always atomic on the system, meaning that it is the smallest addressable unit.
[ caboom @ 31.08.2004. 10:58 ] @
Citat:
blaza:
Zali se cika Bjorneu :)


nemam sta da mu se zalim, prosto, kao sto filmil rece, ima mnogo duhova iz proslosti. nikada ti se nije desilo da moras da radis sa necim sto je "s druge strane standarda"?



tenkju :) ali ima jedan mali problem, naime ovde govorimo o duzini worda a ne velicini byte-a, mada je to npr. kod PDP-a na cudan nacin prepleteno:

http://www.inwap.com/pdp10/hbaker/pdp-10/Byte.html

u svakom slucaju interesantno...
[ filmil @ 31.08.2004. 11:49 ] @
Citat:
 nikada ti se nije desilo da moras da radis sa necim sto je "s druge strane standarda"?
Iako si verovatno mislio na neke egzotičnije stvari, svako ko je ikada hteo da obriše ekran u C++-u sreo se sa drugom stranom standarda. Nuff said.

.... ovaj... a šta ću ja u C++ forumu?!

f
(u krizi identiteta:)
[ ivbrcic @ 04.11.2004. 12:03 ] @
kratko:

najkraci moguci c++ program po standardu je:
Code:

int main ()
{
}


Nema return 0 zato sto je to default.