| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Subscript väärinpäinakx 14.08.05 20:49 C-standardin ihmeellisyyksiä.
// The definition of the subscript operator [] is that E1[E2] is identical to (*(E1+(E2))). // Jommankumman (E1 tai E2) tulee olla kokonaislukumuuttuja ja toisen pointteri. // Missään ei sanota, miten päin niiden tulee olla. // Ei varoituksia tai virheitä (gcc -o ti.exe -Wall ti.c). #include <stdio.h> int main() { int t[5]={1,2,3,4,5}; int i; for(i=0;i<5;i++) printf("%d ",t[i]); printf("\n"); 4[t]=100; for(i=0;i<5;i++) printf("%d ",t[i]); return 0; } editoitu: 02:12 15.8.05 Ceez 21:30 14.8.05 Kylpä nakkas erroria editoitu: 18:35 15.8.05 phadej 22:04 14.8.05 main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);} tosin sanoen: näin voi tehdä, mutta ei pitäisi. Ztane 15:34 15.8.05 Ceez kirjoitti: Sulla on rikkinäinen kääntäjä!Kylpä nakkas erroria akx 15:44 15.8.05 phadej kirjoitti: tosin sanoen: näin voin tehdä, mutta ei pitäisi. Niin saa tehdä, mutta se ei ole kovin intuitiivista. Ehkä tuo on vain hyvän koodaustavan vastaista. Linkku 17:28 15.8.05 Ceez kirjoitti: Kylpä nakkas erroria Et halua kertoa kääntäjääsi? editoitu: 09:57 17.8.05 Ztane 00:11 16.8.05 lisää hauskaa C++:ssa: C++ #include <iostream> class y { public: char operator[](int x) { return '0' + x; } operator const char*() { return "ab"; } }; int main() { y z; std::cout << z[1] << " vs " << 1[z] << endl; } EDIT2: ulostus Ceez 01:57 16.8.05 Eipäs periaatteessa nakannutkaan, bugasin ite. Linkku 09:46 16.8.05 Yksi kommentti vielä. Toi akx:n koodi on aika helvetin epäluettavaa. Eihän siitä saa selvää suurennuslasillakaan, kun taas Ztanen koodista saa heti selvää. cpp #include <stdio.h> int main() { int t[5] = { 1, 2, 3, 4, 5 }; int i; for(i=0; i<5 ;i++) printf("%d ", t[i]); printf("\n"); 4[t] = 100; for(i=0; i<5 ;i++) printf("%d ", t[i]); return 0; } akx 13:50 16.8.05 Lyhyt pätkä, en kiinnittänyt tyyliin niin paljoa huomiota. Muutenkinvälilyönnitonturhia. ;) Chrysalid 22:04 11.11.05 Muuten hyvä, mutta tiedossahan asia on ollut jo kauan. Osoittimet ovat hieno asia C:n koukeroissa :P |
![]() Haku
|