Nə C ??! bir operator?

Mənə bənzəyən C simasını gördüm:

 !ErrorHasOccured() ??!??! HandleError(); 

Düzgün tərtib edilir və yaxşı işləyir. Görünür, bir səhv olub-olmadığını yoxlayır və əgər varsa, onu işləyir. Amma mən, həqiqətən, nə etdiyini və nə etdiyinə tam əmin deyiləm. Proqramçı səhvlərə dair hisslərini ifadə etməyə çalışır.

Mən heç görməmişəm ??!??! hər hansı bir proqramlaşdırma dilində əvvəl, və hər hansı bir yerdə sənədlər tapa bilmirəm. (Google, bu kimi axtarış sorguları ilə kömək etmir ??!??! ) ??!??! Nə edilir və nümunə kod necə işləyir?

1455
19 окт. Peter Olson tərəfindən 19 okt. 2011-10-19 19:56 '11 saat 19:56 'da 2011-10-19 19:56
@ 4 cavab

??! | tirbazdır . Buna görə də, deyir:

 !ErrorHasOccured() || HandleError(); 

qısa bir dövrə bağlı olduqda:

 if (ErrorHasOccured()) HandleError(); 

Həftənin gurusu (C ++ ilə əlaqəli, lakin burada aiddir), mən onu götürdüm.

Trigraphların mümkün mənşəyi və ya @ DwB kimi şərhlər EBCDIC-in mürəkkəbliyi ilə bağlı ola bilər. Bu developerWorks geliştirici panelinin müzakirəsi bu nəzəriyyəni dəstəkləyən görünür.

ISO / IEC 9899: 1999 §5.2.1.1, dipnot 12 (h / t @ Random832):

Trigraph ardıcıllığı, yeddi bit USSCII kodunun alt qrupu olan ISO / IEC 646-da təsvir edildiyi kimi daxil edilməyəcək Invariant kodunda müəyyən edilməyən simvollara imkan verir.

1218
19 окт. istifadəçi tərəfindən verilən cavabı 786653 19 oktyabr 2011-10-19 19:58 '11 saat 19:58 'da 2011-10-19 19:58

Bəli, niyə mövcud olduğunun səbəbi, nümunənizdə niyə mövcud olduğundan fərqli ola bilər.

Bütün bunlar, yarım əsr əvvəl, istifadəçi interfeysi kimi basılı informasiya terminallerinin satılması ilə başlamışdır. Unix və C-in ilk dövründə, Teletype ASR-33 idi.

Bu cihaz yavaş (10 cps), səs-küylü və çirkin idi və onun ASCII karakter seti görünüşü 0x5f ilə başa çatdı, buna görə də (pic diqqətlə baxın) düymələrdən biri deyil:

 { | } ~ 

Trigraflar müəyyən bir problemi düzəltmək üçün müəyyən edilmişdir. Fikir C proqramlarının ASR-33 və digər ASCII dəyərlərinə malik olmayan mühitlərdə olan ASCII alt kümesini istifadə edə biləcəyi idi.

border=0

Sizin misalınız həqiqətən ikisi ??! hər biri deməkdir buna görə nəticə || .

Ancaq demək olar ki, C kodunu yazan insanlar müasir avadanlıqlara malikdirlər. Beləliklə, kimsə Pasxa yumurta kodunu kodu tərk edərək nümayiş etdirir və əylənir.

Əlbəttə ki, işləyib, bu çox populyar SO sualına gətirib çıxardı.

2019

20 окт. Cavab DigitalRoss Oct 20 verilir . 2011-10-20 00:09 '11 at 0:09 2011-10-20 00:09

Bu, t trigraph . ??! | niyə ??!??! - operator ||

129
19 окт. Joel Falcou 19 oct cavab verdi . 2011-10-19 19:58 '11 saat 19:58 'da 2011-10-19 19:58

Daha çox qeyd olunduğu kimi, ??!??! əsasən iki triqram (" ??! və "yenidən ??! ) əvəz olunur yəni, Mantıksal OR , preprocessor.

Aşağıdakı görüntü, bütün trigraphs ehtiva alternativ trigrams birmənalı kombinasiyalar aradan qaldırılması kömək:

2019

25 марта '16 в 5:24 2016-03-25 05:24 Cavab Jim Fasarakis Hilliard tərəfindən 25 Mart 'da 5:24 2016-03-25 05:24' də verilir

etiketlə bağlı digər suallar və ya sual