smily 0 Report post Posted August 13, 2005 Bila compile coding kat bawah, terasa pening kepalaku mencari jawapan kenapa outputnya sebegitu rupa sekali... #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 321dah try google, x dpt dah... Share this post Link to post Share on other sites
electroboy 3 Report post Posted August 13, 2005 boleh post tak apa dlm argc dan argv...? Share this post Link to post Share on other sites
smily 0 Report post Posted August 14, 2005 argc and argv tak berfungsi dalam coding tu. aku saja letak untuk ikut standard. kalu codingnya cam bawah ni, outputnya tetap memeningkan kepalaku.. #include <iostream> using namespace std; void main() { int i = 1; cout << i++ << i++ << i++; } OUTPUT: 321bila tengok coding kat atas sekali imbas, outputnya yang dijangka: 123tapi 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. aku ni baru blaja C++, kalu ada salah silap tolong betulkan. Share this post Link to post Share on other sites
electroboy 3 Report post Posted August 14, 2005 (edited) 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 August 14, 2005 by electroboy Share this post Link to post Share on other sites
smily 0 Report post Posted August 14, 2005 wah.. akhirnya... k, tengkiu electroboy.. 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 MSVCSource code dan output dalam DEV-C++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
1kHz 0 Report post Posted August 15, 2005 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.. Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 15, 2005 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
electroboy 3 Report post Posted August 15, 2005 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
encik pot pet 0 Report post Posted August 15, 2005 aku tak sure pasal cout parameter parsing sebab aku tak reti pun c++ btw, aku rasa benda2 ni berkait dengan operator overloading.. cuba check buku c++ standard and cari pasal coutdaripada result devcpp 4.9.9.2.. jawapan dia "123" Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 15, 2005 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
mfar 0 Report post Posted August 15, 2005 (edited) 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) Edited August 15, 2005 by mfar Share this post Link to post Share on other sites
smily 0 Report post Posted August 15, 2005 Compiler yang aku guna:1) MSVC version 62) 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: 123tak pa, kita cuba cari penjelasan untuk "keanehan" ni sesama. Share this post Link to post Share on other sites
smily 0 Report post Posted August 15, 2005 jumpa dua links kat bawah:cout << i++ << i++;cout << i++ << i++; // no, nodah baca tapi x paham sgt. satu2nya keyword yg famililar = UNDEFINED. pernah dengar time blaja C programming.. Share this post Link to post Share on other sites
mfar 0 Report post Posted August 15, 2005 mfar, kalu coding utk satu2 tu outputnya sama jak utk kdua2 compiler: 123Bukan.... 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
encik pot pet 0 Report post Posted August 15, 2005 aku test dgn vctoolkit2003 - http://msdn.microsoft.com/visualc/vctoolkit2003/jawapan yg aku dapat dari code tu ialah "111"kesimpulannya, cout << i++ << i++; ni menyusahkan ko jer..so takyah pening2 Share this post Link to post Share on other sites
mfar 0 Report post Posted August 16, 2005 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: 123Aku 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 Share this post Link to post Share on other sites
electroboy 3 Report post Posted August 16, 2005 (edited) 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 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 August 16, 2005 by electroboy Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 16, 2005 perhatian.. aku rasacout<<i++<<i++<<i++; adalah TIDAK SAMA dgncout<<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
Ancient One 3 Report post Posted August 16, 2005 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
electroboy 3 Report post Posted August 16, 2005 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 1ini 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
electroboy 3 Report post Posted August 16, 2005 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... Share this post Link to post Share on other sites
hampeh 21 Report post Posted August 16, 2005 (edited) hm ...aku try la test output cout << i << i << i ; => 111cout <<i << i << i++ ; => 221cout <<i<< i++<< i; =>211cout <<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 August 16, 2005 by hampeh Share this post Link to post Share on other sites
1kHz 0 Report post Posted August 16, 2005 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 21 Report post Posted August 16, 2005 (edited) 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 August 16, 2005 by hampeh Share this post Link to post Share on other sites
electroboy 3 Report post Posted August 16, 2005 hmm.tapi aku takleh pkai using namespace std tu ...ade kaitan ke ??←try gunausing std::cout;ganti using namespace std; Share this post Link to post Share on other sites