Jump to content
smily

Cout << I++ << I++ << I++;

Recommended Posts

Bila compile coding kat bawah, terasa pening kepalaku mencari jawapan kenapa outputnya sebegitu rupa sekali... blink.gif

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
        int i = 1;
        cout  << i++ << i++ << i++;

        return 0;
}

sebelum compile, aku expect outputnya: 123 tapi bila dah compile outputnya 321

dah try google, x dpt dah...

Share this post


Link to post
Share on other sites

smile.gif argc and argv tak berfungsi dalam coding tu. aku saja letak untuk ikut standard.

kalu codingnya cam bawah ni, outputnya tetap memeningkan kepalaku.. blink.gif

#include <iostream>

using namespace std;

void main()
{
       int i = 1;
       cout  << i++ << i++ << i++;
}

OUTPUT: 321

bila tengok coding kat atas sekali imbas, outputnya yang dijangka: 123

tapi bila dan compile, lain pulak dah...

aku rasa benda ni disebabkan oleh cara objek cout tu handle stream tapi x dapat cari kat mana-mana. lagipun bahaya belajar ikut 'rasa' jak. biggrin.gif aku ni baru blaja C++, kalu ada salah silap tolong betulkan.

Share this post


Link to post
Share on other sites

tak berfungsi? are you sure? ko amik coding sapa ni? dah obvious yg function main tu accept value dan pointer dari function lain. Cuba ko paste dulu function argc and argv tu... mesti ada perkaitan, eg linked list dan lain2.

kalau tak...mmg very impossible... mmg sepatutnya keluar 123. tak percaa ko buang argument dalam main function tu jadi begini aja:

#include <iostream>

using namespace std;

int main()
{
      int i = 1;
      cout  << i++ << i++ << i++;

     return 0;
}

pastu compile. By the way, consider gak probability ada org modify library ko...?

Edited by electroboy

Share this post


Link to post
Share on other sites

wah.. akhirnya... k, tengkiu electroboy.. biggrin.gif rasanya pasal compiler MSVC aku blum diupdate kot? gambar di bawah ni output kalu aku guna MSVC. gambar kedua plak kalu aku guna DEV-C++.

Source code dan output dalam MSVC

user posted image

Source code dan output dalam DEV-C++

user posted image

ada sesiapa yang dah update MSVC meka kh? leh tolong test compile kat dalam sistem meka. kot-kot masih ada problem..

Share this post


Link to post
Share on other sites

Aku belum pasti kenapa, tapi mengikut intuisi aku, rasanya 321 should be the correct output..

Harap2 Ancient_One, zeph, dan cik siti dapat beri comment.. smile.gif

Share this post


Link to post
Share on other sites

Aku compile dgn Dev-C++ dapat 321.. Kenapa kau dpt 123 pulak? Aku punya Dev-C++ version 4.9.8.0 ..

Share this post


Link to post
Share on other sites

aku pun compile guna Dev C++, version 4.9.9.1. dan juga to be sure aku guna Ms Visual C++ 6.0. result dia mmg 123, ni full coding yg aku guna pd devc++:

#include <iostream>

using namespace std;

int main ()
{
	int i = 1;

	cout<< i++ <<i++ <<i++;

	cout<<endl;




    system("PAUSE");
   
return 0;
}

1Khz, ko compile coding yg mana satu, yg smily first2 post tadi ke? aku pun dah try compile and run coding smily bagi tu, sama gak dpt 123. hmmm...apsal plak camtu?

Share this post


Link to post
Share on other sites

aku tak sure pasal cout parameter parsing sebab aku tak reti pun c++ biggrin.gif

btw, aku rasa benda2 ni berkait dengan operator overloading.. cuba check buku c++ standard and cari pasal cout

daripada result devcpp 4.9.9.2.. jawapan dia "123"

Share this post


Link to post
Share on other sites

aku copy paste dari electroboy punya reply tu, dan compile guna Visual Studio .NET (apa compiler c++ dia aku tak tau)..

tapi aku still dapat 321 !!

hihihi, pelik nih.. adakah ia machine dependant?

aku punya WinXP SP2, Pentium 4 2.8 GHz, 504 MB RAM.

aku rasa ada kaitan dgn output buffering.. ye ke?

Share this post


Link to post
Share on other sites

Kalo buat output satu², cammana plak??

#include <iostream>

using namespace std;

int main ()
{
int i = 1;

cout<<i++; 
cout<<i++; 
cout<<i++;

cout<<endl;

return 0;
}

Kalo coding cout<<i++<<i++<<i++; sebaris i kasi yg depan (yakni sebelum statement cout) naik sampai habis baru display, kemudian baru yg kedua, n then ketiga (kalo ikut cara aku trace la) unsure.gif

Edited by mfar

Share this post


Link to post
Share on other sites

Compiler yang aku guna:

1) MSVC version 6

2) Dev-C++ 5 Beta 9.2 (4.9.9.2)

tapi MSVC yang aku guna tu masih suci bersih tanpa sebarang service pack. nak apply service packnya dulu, then test compile smula.

mfar, kalu coding utk satu2 tu outputnya sama jak utk kdua2 compiler: 123

tak pa, kita cuba cari penjelasan untuk "keanehan" ni sesama. laugh.gif

Share this post


Link to post
Share on other sites

mfar, kalu coding utk satu2 tu outputnya sama jak utk kdua2 compiler: 123

Bukan.... yg aku nak 'show' tu nak bagi perbandingan antara 2 coding.. kalaulah kau x UPDATE MSVC... tu je!

Share this post


Link to post
Share on other sites

OK, aku dah uji dua coding... yg mmg menarik ialah bila output coding memasing mcm nih=>

cout<<i++<<i++<<i++;
OUTPUT: 321
cout<<i++;
cout<<i++;
cout<<i++;

OUTPUT: 123

Aku guna Borland C++ 5.02; versi lama, x update ngan apa² pun, jauh skali kalo install sama ngan Ms Visual C++... ha, kan nampak bezanya tu dry.gif

Share this post


Link to post
Share on other sites

kesimpulannya, cout << i++ << i++;  ni menyusahkan ko jer..so takyah pening2

minta maaf, tapi aku kurang bersetuju dengan kenyataan ini. sbb dlm banyak-banyak application yg aku buat, aku mmg gunakan ringkasan coding gini:

cout<<i++<<i++<<i++;
instead of gini:
cout<<i++;
cout<<i++;
cout<<i++;

sbb kedua-duanya akan menghasilkan output yang sama. cara yg pertama tu akan meringkaskan code dan menjimatkan memori. itu apa yang aku belajar dari lecturer aku la... dan setelah dua tahun aku masih praktikkannya sampai sekarang.

Unless kalau aku silap, maybe aku tersalah faham maksud lecturer aku biggrin.gif

sebenarnya aku pun berpendapat ini machine dependant, atau someone dah mengubah library <iostream> tu. sbb masa aku buat amali di lab (guna public pc), banyak member aku dpt output berbeza walaupun codingnya sama. tp so far aku takde la lagi masalah ni.

Aku dah compile balik coding aku paste di atas ke pc lain, semuanya output sama: 123. aku guna compiler devcpp 4.9.9.1 dan ms visual 6.0

Edited by electroboy

Share this post


Link to post
Share on other sites

perhatian.. aku rasa

cout<<i++<<i++<<i++;
adalah TIDAK SAMA dgn
cout<<i++;
cout<<i++;
cout<<i++;

yg kedua mmg obvious jawapannya ialah 123, mmg tak ada jawapan lain..

Share this post


Link to post
Share on other sites

the correct output for "cout <<i++<<i++<<i++;"

is 321..

kalau korang taknak confuse.. just guna paling banyak satu ++.

Share this post


Link to post
Share on other sites

hmmm... sebenarnya tanda ";" mematikan stream sesuatu syntax, sama la macam php.

dalam C++, contohnya

//coding satu

int i = 1;

cout <<"Nilai i ialah "<< i;

boleh ditulis juga seperti ini:

//coding dua
int i = 1;

cout <<"Nilai i ialah ";
cout<< i;

kedua-dua akan menghasilkan output yg sama, iaitu Nilai i ialah 1

ini kerana dlm contoh coding satu, tiada tanda ";" selepas statement cout <<"Nilai i ialah ", so output stream (ni ke istilahnya?)seterusnya akan diambil kira sebagai cout kerana tiada tanda ";".

tidak seperti coding kedua, kerana ada tanda ";", maka kena letak statement cout semula sebelum <<i, sebab tanda";" sebelum tu telah 'mematikan' stream output cout.

so, cout<<i++<<i++<<i++; pun konsepnya sama bagi aku. banyak dah aku baca di rujukan buku pasal benda ni. kalau salah harap betulkan.

Share this post


Link to post
Share on other sites

kalau korang taknak confuse.. just guna paling banyak satu ++.

ancient_one, tak faham la.makna just guna paling banyak satu ++. .. boleh tolong explain skit tak? thanks in advance... smile.gif

Share this post


Link to post
Share on other sites

hm ...aku try la test

output

cout << i << i << i ; => 111

cout <<i << i << i++ ; => 221

cout <<i<< i++<< i; =>211

cout <<i++<< i << i ; => 111

kesimpulan nyer , pengiraan i++ tu hanya akan di cout kan apabila nilai i seterus nya dikeluar kan ...kira nya dia hanya jalan kan pengiraan tapi tidak keluarkan

nilai yang baru ...

aku rase la ...TAMBAH :: aku guna borland c++ 5.02 .. lame nye kot

Edited by hampeh

Share this post


Link to post
Share on other sites

hampeh, cuba kau compile cout << i++ << i++ << i++; ..

mesti dapat 321 kan? cuba bagitau spec komp ko.. OS sama processor/RAM ..

Share this post


Link to post
Share on other sites

hampeh, cuba kau compile cout << i++ << i++ << i++; ..

mesti dapat 321 kan? cuba bagitau spec komp ko.. OS sama processor/RAM ..

ops ..sry lupa lak ...aku mmg dpt 321 bila buat cout << i++ << i++ < i++ ;

aku pkai amd2500+ ngan 512 ram ...os aku pkai win xp sp1 ...

hmm.tapi aku takleh pkai using namespace std tu ...ade kaitan ke ??

Edited by hampeh

Share this post


Link to post
Share on other sites

hmm.tapi aku takleh pkai using namespace std  tu ...ade kaitan ke ??

try guna

using std::cout;

ganti using namespace std;

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...