Da questo codice viene fuori, ad esempio, la funzione restituita 3 .
(11&1)==1 ; 11==01 no, è falso, non ha funzionato.
Stavo scrivendo questo e ho pensato che forse ho frainteso le operazioni.
& significa che converto i valori decimali in binario e faccio una congiunzione bitwise.
== vero quando il primo termine è uguale al secondo termine. È corretto?
Queste sono le cose che non capisco, sono un autodidatta. So solo come controllare e cosa posso ottenere. Il tuo esempio (11&1)==1 risulterà vero poiché 11 può essere composto solo dalle bandiere 1+2+8, quindi 1 è incluso nell'insieme.
Alexey Viktorov: Queste sono le cose che non capisco, sono un autodidatta. So solo come controllare e cosa posso ottenere. Il tuo esempio (11&1)==1 risulterà vero perché 11 può essere composto solo dalle bandiere 1+2+8, quindi 1 è incluso nell'insieme.
Controlla cosa verrà restituito
Questo è quello che ho scritto in binario, ho dimenticato di specificare. Ho sostituito i valori nel codice che ho scritto se la funzione restituisse 3 e l'ho confrontato con FOK. Questo è il modo in cui è scritto il binario. (0b11 & 0b1)==0b1 ; il risultato tra parentesi 0b11 ha l'espressione 0b11==0b1 ; ma risulta falso, secondo me. Deve essere vero perché tutto funzioni. Beh, dato che questo campione è nella guida, è vero. Devo aver capito male qualcosa. Ora ho guardato l'aiuto C, e prima ancora quello mql. Sembra essere lo stesso. Mi scuso se sto facendo domande molto stupide e vi ringrazio tutti per le risposte.
L'aiuto di mql dice che il valore true è qualsiasi valore non zero, quindi questa deve essere la risposta. E poi l'uguaglianza, e in C l'uguaglianza. Si scopre che non è l'uguaglianza, ma se i termini confrontati sono maggiori di zero, allora il valore è vero. Credo di sì. È scritto in modo poco chiaro. Si tratta dell'operatore ==.
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.
E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:
(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.
Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.
E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:
(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.
È vero che (termine positivo 1 == termine positivo 2) ma il termine positivo 1 non è uguale al termine positivo 2? Risulta così, perché l'aiuto dice che la verità è qualsiasi valore non zero, e poi il codice funziona.
Ivan_Invanov: È vero che (termine positivo 1 == termine positivo 2) ma il termine positivo 1 non è uguale al termine positivo 2? Risulta così, perché l'aiuto dice che la verità è qualsiasi valore non zero, e quindi il codice funziona.
Quello che mi confonde è che la parola uguaglianza è scritta dopo.
Dmitry Fedoseev: In quale luogo del riferimento? Dove e cosa?
Questo mi sembra una contraddizione. È vero non se a è uguale a b, ma se a e b sono diversi da zero. Beh, non è una contraddizione, non è scritto chiaramente. Credo di aver capito, grazie.
ENUM_SYMBOL_TRADE_EXECUTION Non dice che tipo è, e le intestazioni nell'aiuto sono confuse (sembrava scritto per le stringhe, e poi senza menzionarlo ha iniziato a parlare di interi). Ho provato tutte e tre le opzioni, ma ogni volta errore del compilatore. Cosa c'è che non va?
Ivan_Invanov: ENUM_SYMBOL_TRADE_EXECUTION Non dice che tipo ha, e le intestazioni nell'aiuto sono confuse (sembrava scritto per le stringhe, e poi senza menzionarlo ha iniziato a parlare di interi) . Ho provato tutte e tre le opzioni, ma ogni volta errore del compilatore. Cosa c'è che non va?
Sì, capisco come lavorare con le cifre binarie.
Da questo codice viene fuori, ad esempio, la funzione restituita 3 .
(11&1)==1 ; 11==01 no, è falso, non ha funzionato.
Stavo scrivendo questo e ho pensato che forse ho frainteso le operazioni.
& significa che converto i valori decimali in binario e faccio una congiunzione bitwise.
== vero quando il primo termine è uguale al secondo termine. È corretto?
Controlla cosa verrà restituito
Queste sono le cose che non capisco, sono un autodidatta. So solo come controllare e cosa posso ottenere. Il tuo esempio (11&1)==1 risulterà vero perché 11 può essere composto solo dalle bandiere 1+2+8, quindi 1 è incluso nell'insieme.
Controlla cosa verrà restituito
Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.
E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:
(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.
Un'operazione bitwise, questa è un'operazione P O B I T O R T . Funziona con i bit. Per esempio, 1 è 00000001. 2 è 00000010. Una bandiera può essere solo 1, 2, 4, 8, ecc. In breve, un bit è occupato.
E un insieme di bandiere può avere qualsiasi bit occupato, per esempio 00000101. Questo insieme comprende le bandiere 00000001 e 00000100. E per scoprire se qualche bandiera è inclusa nell'insieme delle bandiere, bisogna fare una "e" bitwise della bandiera e dell'insieme, se lascia una bandiera, significa che è nell'insieme:
(00000101& 00000100) == 00000100 - vero. Questo significa che c'è un flag 00000101 nel set 00000101.
È vero che (termine positivo 1 == termine positivo 2) ma il termine positivo 1 non è uguale al termine positivo 2? Risulta così, perché l'aiuto dice che la verità è qualsiasi valore non zero, e quindi il codice funziona.
In quale luogo del riferimento? Dove e cosa?
Questo mi sembra una contraddizione. È vero non se a è uguale a b, ma se a e b sono diversi da zero. Beh, non è una contraddizione, non è scritto chiaramente. Credo di aver capito, grazie.
ENUM_SYMBOL_TRADE_EXECUTION Non dice che tipo ha, e le intestazioni nell'aiuto sono confuse (sembrava scritto per le stringhe, e poi senza menzionarlo ha iniziato a parlare di interi) . Ho provato tutte e tre le opzioni, ma ogni volta errore del compilatore. Cosa c'è che non va?
Dovete farlo in questo modo: