Autor Wątek: Zagadki językoznawcze  (Przeczytany 62221 razy)

Offline Aithne

  • Użytkownik

# Wrzesień 20, 2009, 15:36:50
Kod: (cpp) [Zaznacz]
int func() {
    const char* txt = "Ding!";
    while (true)
        // W00t W1LL h4PPeN hi3r?????????/
        printf("%s",txt);
    return 5;
}
Nawet bardziej chamskie od mojego - nie ma to jak trigraph ;)

Daj ktoś jakąś ciekawą zagadkę, nudno trochę ;)
« Ostatnia zmiana: Wrzesień 20, 2009, 15:50:18 wysłana przez Aithne »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline ConayR

  • Użytkownik

# Wrzesień 20, 2009, 16:17:40
Możliwe że było, nie czytałem całego wątku. Prostackie zadanie:
Kod: (cpp) [Zaznacz]
int array[]={1,2};
#define SIZE (sizeof(array)/sizeof(*array))
wprintf(L"-1<=%d : %s\n", SIZE, (-1<=SIZE) ? L"true" : L"false");

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 20, 2009, 16:28:22
Rzuci warna, że porównanie signed/unsigned, ale chyba zwróci true? Nie pamiętam już, w którą stronę tu szła konwersja :-)

Offline ConayR

  • Użytkownik

# Wrzesień 20, 2009, 17:11:22
Ani to, ani to - zwróci false (MSVC jak i MinGW). ;-)

Offline Xion

  • Moderator
    • xion.log

# Wrzesień 20, 2009, 17:29:19
No to jeszcze jedno:
Kod: (cpp) [Zaznacz]
char arr[] = {
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // H
  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // R
  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // \
  30, 31, 32 // _
};
Jaki będzie rozmiar tablicy?
30 elementów - \ na końcu linii przedłuża komentarz. Klasyczny błąd ludzi rysujących ascii art w komentarzach. ;]
Wg mnie to się w ogóle nie skompiluje z powodu średnika po 29 i przed } :)

Offline lgromanowski

  • Użytkownik
    • OpenMW, Elderscrolls III: Morrowind engine reimplementation

# Wrzesień 20, 2009, 17:36:29
No to jeszcze jedno:
Kod: (cpp) [Zaznacz]
char arr[] = {
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // H
  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // R
  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // \
  30, 31, 32 // _
};
Jaki będzie rozmiar tablicy?
30 elementów - \ na końcu linii przedłuża komentarz. Klasyczny błąd ludzi rysujących ascii art w komentarzach. ;]
Wg mnie to się w ogóle nie skompiluje z powodu średnika po 29 i przed } :)

Gcc to łyka, wyrzuca tylko ostrzeżenie: "warning: multi-line comment".

Offline ConayR

  • Użytkownik

# Wrzesień 20, 2009, 17:38:50
Wg mnie to się w ogóle nie skompiluje z powodu średnika po 29 i przed } :)
Przecinka. ;)

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 20, 2009, 18:06:34
Wiele języków (php, python) pozwala na przecinki po ostatnim elemencie tablicy. Czy C(++) też, nawet nie wiedziałem :)

Offline Aithne

  • Użytkownik

# Wrzesień 20, 2009, 18:28:21
C++ teoretycznie nie pozwala (chociaż wszędzie działa), z tego co pamiętam C pozwala, więc powiedzmy, że to było w C.

Da false, bo (jak nikt jeszcze nie wyjaśnił to ja to zrobię ;)) konwersja zawsze idzie signed => unsigned. Tyle - z -1 zrobi się jakiś uint.max, rozmiar tej tablicy raczej ani równy, ani większy od uint.max nie jest.

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 20, 2009, 18:57:55
Czyli problem można uprościć do tego kuriozum :) :
Kod: (cpp) [Zaznacz]
wprintf(L"-1<=2 : %s\n", (-1 <= 2) ? L"true" : L"false");
wprintf(L"-1<=2u : %s\n", (-1 <= 2u) ? L"true" : L"false");

Ale w jednym miałem rację:
Cytat: Kos
Rzuci warna, że porównanie signed/unsigned, ale chyba zwróci true? Nie pamiętam już, w którą stronę tu szła konwersja :-)
Ani to, ani to - zwróci false (MSVC jak i MinGW). ;-)
Zwróci, ale...
>g++ foo.cpp -Wall   
foo.cpp: In function `int main()':                                             
foo.cpp:6: warning: comparison between signed and unsigned integer expressions
Warna jak miał rzucać, tak rzuca. :-) (gcc version 3.4.2 (mingw-special) )

Offline ConayR

  • Użytkownik

# Wrzesień 20, 2009, 19:23:57
Na Wallu, tak. :)

Offline Kos

  • Użytkownik
    • kos.gd

# Wrzesień 20, 2009, 19:59:17
A, bo da się przecież kompilować bez Walla. Sorry, zupełnie zapomniałem. :)

Offline ConayR

  • Użytkownik

# Wrzesień 20, 2009, 20:28:51
LOL, to jest słuszna uwaga. W MSVC używam /W4 /WX a MinGW... nie używam w ogóle, jeśli nie muszę. Będąc świadomym tego, że niektórzy MSVC nie uznają, skompilowałem na szybko w MinGW. Bez Wall. Poprawię się następnym razem. ;)

Offline Kos

  • Użytkownik
    • kos.gd

# Październik 14, 2009, 17:38:00
Zagadka na dziś, sponsorowana przez Insanely Low-Level: Oto (błędny) kod C++.

Kod: (cpp) [Zaznacz]
template <class T> class bugs {
};

template<> bugs<int>::bugs()
{
}

Pytanie brzmi: Jaki error rzuci MSVC? ^^

Offline lgromanowski

  • Użytkownik
    • OpenMW, Elderscrolls III: Morrowind engine reimplementation

# Październik 14, 2009, 17:47:27
Zagadka na dziś, sponsorowana przez Insanely Low-Level: Oto (błędny) kod C++.

Kod: (cpp) [Zaznacz]
template <class T> class bugs {
};

template<> bugs<int>::bugs()
{
}

Pytanie brzmi: Jaki error rzuci MSVC? ^^

MSVC 2008 EE:
Cytuj
fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'msc1.cpp', line 1411)