Odpowiedz
==
to test na równość. =
to zadanie.
Każda dobra książka C powinna to pokryć (dość wcześnie w książce, którą wyobrażam sobie).
Na przykład:
int i = 3; // sets i to 3.
if (i == 3) printf("i is 3\n"); // prints it.
Tylko uważaj na haniebne:
if (i = 4) { }
który jest ważny C i często łapie ludzi. To faktycznie przypisuje 4 do zmiennej i
i wykorzystuje ją jako wartość prawdy w instrukcji if
. Prowadzi to wiele osób do korzystania z brzydsze ale bezpieczniej:
if (4 == i) {}
które jeśli przypadkowo użyć =
zamiast ==
jest błąd kompilacji zamiast czegoś, ugryzie cię w tyłek podczas gdy program jest uruchomiony :-)
Operator logiczny - lub dwa pionowe znaki kreskowe, jeden po drugim, , a nie pojedynczy znak. Tutaj jest wyrównana z logicznym-a, a zmienna nazywa b4
:
||
&&
b4
tam żadnej magii.
Proste, jasne, bez protekcjonalności. +1. –
http://www.cppreference.com/wiki/operator_precedence, http://www.cplusplus.com/doc/tutorial/. Sprawdź na tych stronach, które były prawdziwą pomocą, gdy uczyłem się C++. –
testy == równość = przypisuje wartość
nie są związane ||
a == b
jest Test jeśli i b są równe.
a = b
nazywa zadanie , co oznacza, że aby zmiennej się o taką samą wartość jak b.
(wpisać |
z Shift- \
w układ klawiatury US).
dodam, że w fińskich i szwedzkich klawiatur. Symbol rury; |; OR to AltGr (prawy alt) i <. JEŻELI natomiast używasz Maca, to jest to klawisz Alt-7.
Dużo się pociłem, gdy po raz pierwszy zacząłem pisać na tych klawiaturach.
Teraz, gdy znasz już różnicę między "==" i "=", pozwól, że powiem ci kilka słów ostrożności, chociaż "==" jest używane jako standardowy test równości między porównywalnymi zmiennymi a "=" używanym jako przypisanie odlewane wewnętrznie, następujący błąd programowania jest cichy wspólny.
W poniższym przykładzie i podobnych kodach, "=" jest znane jako "Zawsze prawdziwe" operator warunkowy.
#include<stdio.h>
int main()
{
int i = 10, j = 20;
if (i = j)
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
Tak więc uwaga jest „Nigdy nie używaj«=
»w if
sprawozdania, chyba że masz coś źle w głowie.”
Co? Nie ma nic bardziej eleganckiego niż: if (fh = fopen ("file.txt", "r") {process_file (fh); close (fh);} // :-) – paxdiablo
Nazwałbym go również "zawsze prawdziwy i trąbi mnie jako "warunkowego operatora". Ale dobra rada, więc +1. – paxdiablo
@paxdiablo: masz rację ... ale chciałem zachować ostrożność tylko dla początkujących. Jednak w głupich kodach, jeśli chcę mieć duplikat deskryptora pliku jako "fh", mogłoby to prowadzić do błędów: if (fd = fh = fopen ("file.txt", "r") {// jakiś kod}; –
- 1. Co to jest "Przenośny C++"?
- 2. //! [0] C++ - co to jest?
- 3. Co to jest "upakowana" struktura w C?
- 4. Co to jest ".. ::." w języku C#?
- 5. Co to jest odpowiednik UINT32_MAX w C++?
- 6. Co to jest wymazywanie typów w C++?
- 7. Co to jest "kategoria" w Objective-C?
- 8. Co to jest "^" w Objective-C
- 9. Co to jest void * w języku C#?
- 10. Co to jest wskaźnik Singleton w C?
- 11. Co to jest obiekt skalarny w C++?
- 12. Co to jest operator "" w C++?
- 13. Co to jest DBL_MAX w C++?
- 14. Co to jest "dosłowny" w C++?
- 15. Co to jest obiekt w C?
- 16. Co to jest mapa bitowa w C?
- 17. Co to jest odpowiednik C# w java.util.regex?
- 18. Co to jest! 0 w C?
- 19. Co to jest odpowiednik C# w dynamicznym C++ w C++?
- 20. Co to jest C++ analog C# byte []?
- 21. Co to jest „Class :: *”
- 22. Co to jest wstawianie?
- 23. Co to jest wersja C++ Java ArrayList
- 24. Co to jest pakiet SDK? (C++)
- 25. Co to jest% * c% * cw `printf`?
- 26. Co to jest klasa inline C++?
- 27. Co to jest 1LL lub 2LL w C i C++?
- 28. Co to jest dynamiczny odpowiednik C# w C++ CLI?
- 29. Co to jest Shadowing?
- 30. Co to jest bash escape character "\ c"?
Komentarze usunięte, ponieważ odwróciły uwagę od odpowiedzi. SO ma jasną politykę "Żadne pytanie nie jest zbyt trywialne lub" nowicjusz "." Określone w FAQ (http://stackoverflow.com/faq). Jeśli chcesz omówić tę politykę, proszę ją wziąć na http://meta.stackoverflow.com/ –