1 / 5
Dec 2017

Mam mały problem, nawet dwa, bo nie wiedziałem gdzie zadać to pytanie, ale do rzeczy,

co daje ~ w tym zapisie {for(;~scanf("%i",&n);)?
Mógłby mi ktoś wytłumaczyć ?

  • created

    Dec '17
  • last reply

    Dec '17
  • 4

    replies

  • 1.1k

    views

  • 5

    users

  • 1

    like

  • 2

    links

zdecydowanie lepiej byłoby tak:

for ( ; scanf("%i", &n) == 1; ) { ... }

lub jeszcze lepiej (prościej):

while (scanf("%i", &n) == 1) { ... }

natomiast informację, co to daje najprościej znaleźć w podręczniku C:

  1. instrukcja for
  2. operacje wejścia/wyjścia - scanf() - format

jeżeli masz awersję do podręcznika w postaci papierowej, to równie dobrze powie ci to google.pl

Generalnie podpisuje się pod tym co napisał Mariusz, zawsze lepiej samemu dojść do rozwiązania, ale trochę Ci pomogę. To co wkleiłeś to jeden z trików używanych przy skracaniu kodów. Chodzi o to żeby korzystając z wyniku zwracanego przez scanf (patrz manual) sprawdzić czy pętla powinna zrobić kolejny obrót. Tylda ~ to operator negacji bitowej czyli odwrócenia bitów w zmiennej. Zobacz co powoduje jego użycie na dowolnej liczbie całkowitej ujemnej, a potem w ramach pracy domowej opisz nam tu co daje w przypadku powyższego kodu :slight_smile:

A ja, nim za bardzo polubisz skracać kod, powiem Ci, że sztuczki tego rodzaju powinny być stosowane wyłącznie jako ciekawostki / forma nauki do konkursów / na konkursach programistycznych i algorytmicznych typu SPOJ.

To rzeczywiście masz problem, więc może najpierw tego się dowiedz?

W zasadzie już dostałeś odpowiedzi, ale ja dodam jeszcze dwie:

  1. Taki zapis jest nieczytelny i nie przenośny a zakładając, że używasz windows to rzeczywiście masz problem :wink:
  2. Miało być dwa, ale w między czasie Cię “namierzyłem”, [http://pl.spoj.com/status/SUMAN,johnbravo00/6] czy nie można było tak od razu? [Napisać, że chodzi o zadanie suma[n]! ]

Suggested Topics

Want to read more? Browse other topics in Tutoriale, poradniki or view latest topics.