Wyzwanie
Biorąc pod uwagę liczbę (zmiennoprzecinkową / dziesiętną), zwróć jej odwrotność, tj. 1 podzieloną przez liczbę. Dane wyjściowe muszą być liczbą zmiennoprzecinkową / dziesiętną, a nie tylko liczbą całkowitą.
Szczegółowa specyfikacja
- Musisz otrzymać dane wejściowe w postaci liczby zmiennoprzecinkowej / dziesiętnej ...
- ... który ma co najmniej 4 znaczące cyfry precyzji (w razie potrzeby).
- Więcej jest lepsze, ale nie liczy się w wyniku.
- Musisz generować dane przy użyciu dowolnej akceptowalnej metody wyjściowej ...
- ... odwrotność liczby.
- Można to zdefiniować jako 1 / x, x⁻¹.
- Musisz generować co najmniej 4 znaczące cyfry precyzji (w razie potrzeby).
Dane wejściowe będą dodatnie lub ujemne, z wartością bezwzględną w zakresie [0,0001, 9999] włącznie. Nigdy nie otrzymasz więcej niż 4 cyfr po przecinku, ani więcej niż 4, zaczynając od pierwszej niezerowej cyfry. Dane wyjściowe muszą być dokładne do 4. cyfry od pierwszej niezerowej.
(Dzięki @MartinEnder)
Oto kilka przykładowych danych wejściowych:
0.5134
0.5
2
2.0
0.2
51.2
113.7
1.337
-2.533
-244.1
-0.1
-5
Zauważ, że nigdy nie otrzymasz danych, które mają więcej niż 4 cyfry dokładności.
Oto przykładowa funkcja w Ruby:
def reciprocal(i)
return 1.0 / i
end
Zasady
- Wszystkie akceptowane formy produkcji są dozwolone
- Standardowe luki zabronione
- To jest golfowy kod , najkrótsza odpowiedź w bajtach wygrywa, ale nie zostanie wybrana.
Wyjaśnienia
- Nigdy nie otrzymasz danych wejściowych
0
.
Nagrody
To wyzwanie jest oczywiście trywialne w większości języków, ale może stanowić zabawne wyzwanie w bardziej ezoterycznych i nietypowych językach, więc niektórzy użytkownicy chętnie przyznają punkty za wykonanie tego w niezwykle trudnych językach.
@DJMcMayhem przyzna nagrodę +150 punktów za najkrótszą odpowiedź na uderzenie mózgu, ponieważ uderzenie mózgu jest niezwykle trudne dla liczb zmiennoprzecinkowych@ L3viathan przyzna nagrodę +150 punktów za najkrótszą odpowiedź OIL . OIL nie ma natywnego typu zmiennoprzecinkowego, ani nie ma podziału.
@ Riley przyzna nagrodę +100 punktów za najkrótszą odpowiedź sed.
@EriktheOutgolfer przyzna nagrodę +100 punktów za najkrótszą odpowiedź Sesos. Podział na pochodne ruchy mózgów takie jak Sesos jest bardzo trudny, nie mówiąc już o podziale zmiennoprzecinkowym.
Ja ( @Mendeleev ) przyznam nagrodę w wysokości +100 punktów za najkrótszą odpowiedź Retiny .
Jeśli istnieje język, w którym Twoim zdaniem fajnie byłoby zobaczyć odpowiedź, a chcesz zapłacić przedstawicielowi, dodaj swoje imię i nazwisko do tej listy (posortowane według kwoty nagrody)
Tabela liderów
Oto fragment kodu w celu wygenerowania przeglądu zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik to suma dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
źródło
1/x
.Odpowiedzi:
Brain-Flak ,
772536530482480 + 1 = 481 bajtówPonieważ Brain-Flak nie obsługuje liczb zmiennoprzecinkowych, musiałem użyć
-c
flagi do wprowadzania i wyprowadzania ciągów, stąd +1.Wypróbuj online!
Wyjaśnienie
Pierwszą rzeczą, którą musimy się zająć, jest przypadek negatywny. Ponieważ odwrotność liczby ujemnej jest zawsze ujemna, możemy po prostu trzymać się znaku ujemnego do końca. Zaczynamy od wykonania kopii górnej części stosu i odejmowania od niej 45 (wartość ASCII
-
). Jeśli tak, to umieszczamy zero na górze stosu, jeśli nie, nic nie robimy. Następnie podnosimy górę stosu, aby odłożyć go na koniec programu. Jeśli dane wejściowe rozpoczęte od a-
są nadal, to-
jeśli tak nie jest, to ostatecznie zbieramy to zero, które umieściliśmy.Teraz to nie przeszkadza, musimy przekonwertować realizacje ASCII każdej cyfry na tam rzeczywiste wartości (0-9). Zamierzamy również usunąć kropkę dziesiętną,
.
aby ułatwić obliczenia. Ponieważ musimy wiedzieć, gdzie zaczyna się kropka dziesiętna, kiedy wstawimy ją później, przechowujemy liczbę, aby śledzić, ile cyfr było przed.
offstackiem.Oto jak to robi kod:
Zaczynamy od odejmowania 46 (wartość ASCII
.
) od każdego elementu na stosie (jednocześnie przenosząc je wszystkie do stosu). To sprawi, że każda cyfra będzie o dwa więcej niż powinna, ale spowoduje.
dokładnie zero.Teraz przenosimy wszystko na lewy stos, dopóki nie osiągniemy zera (odejmując dwa z każdej cyfry podczas jazdy):
Rejestrujemy wysokość stosu
Przenieś wszystko inne na lewy stos (ponownie odejmując ostatnie dwa od każdej cyfry podczas ich przenoszenia)
I odłóż zapisaną wysokość stosu
Teraz chcemy połączyć cyfry w jedną podstawową liczbę 10. Chcemy również uzyskać potęgę 10 z podwójną liczbą jako tą liczbą do wykorzystania w obliczeniach.
Zaczynamy od ustawienia 1 na wierzchu stosu, aby uzyskać moc 10 i przesunięcie wysokości stosu minus jeden na stos, aby użyć pętli.
Teraz pętlujemy wysokość stosu minus 1 razy,
Za każdym razem mnożymy górny element przez 100, a pod nim mnożymy następny element przez 10 i dodajemy go do poniższej liczby.
Kończymy naszą pętlę
Teraz w końcu skończymy z konfiguracją i możemy rozpocząć faktyczne obliczenia.
To było to...
Dzielimy moc 10 przez zmodyfikowaną wersję danych wejściowych za pomocą algorytmu dzielenia liczb całkowitych 0, który znajduje się na wiki . To symuluje podział 1 przez wejście, jedyny sposób, w jaki Brain-Flak wie, jak to zrobić.
Na koniec musimy sformatować dane wyjściowe w odpowiednim ASCII.
Teraz, gdy odkryliśmy,
ne
że musimy wyjąće
. Pierwszym krokiem do tego jest przekonwertowanie go na listę cyfr. Kod ten jest zmodyfikowaną wersją 0 ' „s algorytm divmod .Teraz bierzemy liczbę i dodajemy przecinek dziesiętny tam, gdzie należy. Samo myślenie o tej części kodu przywraca ból głowy, więc na razie zostawię to jako ćwiczenie dla czytelnika, aby dowiedzieć się, jak i dlaczego to działa.
Umieść znak ujemny lub znak zerowy, jeśli nie ma znaku ujemnego.
źródło
I don't know what this does or why I need it, but I promise it's important.
1.0
lub10
-c
flagi z wejściem i wyjściem ASCII. Ponieważ Brain-Flak nie obsługuje liczb zmiennoprzecinkowych, muszę wziąć IO jako ciąg znaków.Python 2 , 10 bajtów
Wypróbuj online!
źródło
Retina ,
9991 bajtówWypróbuj online!
Woohoo, sub-100! Jest to zaskakująco wydajne, biorąc pod uwagę, że tworzy (a następnie dopasowuje) ciąg zawierający więcej niż 107 znaków w jednym punkcie. Jestem pewien, że nie jest jeszcze optymalny, ale w tej chwili jestem całkiem zadowolony z wyniku.
Wyniki o wartości bezwzględnej mniejszej niż 1 zostaną wydrukowane bez wiodącego zera, np .
.123
Lub-.456
.Wyjaśnienie
Podstawową ideą jest użycie podziału na liczby całkowite (ponieważ jest to dość łatwe w przypadku wyrażeń regularnych i arytmetyki jednoargumentowej). Aby uzyskać wystarczającą liczbę cyfr znaczących, dzielimy dane wejściowe na 10 7 . W ten sposób każde wejście do 9999 nadal daje 4-cyfrową liczbę. W efekcie oznacza to, że mnożymy wynik przez 10 7, więc musimy to śledzić, gdy później ponownie wstawimy przecinek dziesiętny.
Zaczynamy od zastąpienia kropki dziesiętnej lub końca łańcucha, jeśli nie ma kropki dziesiętnej 8 średnikami. Pierwszy z nich to sam przecinek dziesiętny (ale używam średników, ponieważ nie trzeba ich uciekać), pozostałe 7 wskazują, że wartość została pomnożona przez 10 7 (jeszcze tak nie jest, ale wiemy, że zrobimy to później).
Najpierw przekształcamy dane wejściowe w liczbę całkowitą. Dopóki po przecinku są jeszcze cyfry, przesuwamy jedną cyfrę do przodu i usuwamy jeden z średników. Jest tak, ponieważ przesunięcie punktu dziesiętnego w prawo zwielokrotnia wartość wejściową przez 10 , a zatem dzieli wynik przez 10 . Ze względu na ograniczenia wejściowe wiemy, że stanie się to maksymalnie cztery razy, więc zawsze jest wystarczająco dużo średników, aby je usunąć.
Teraz, gdy dane wejściowe są liczbami całkowitymi, konwertujemy je na jednoargumentowe i dodajemy 10 7
1
s (oddzielone znakiem a,
).Dzielimy liczbę całkowitą na 10 7 , licząc, ile odwołań wstecznych do niej pasuje (
$#2
). Jest to standardowy podział na liczbę całkowitą jednoargumentowąa,b
->b/a
. Teraz musimy tylko skorygować pozycję przecinka dziesiętnego.Jest to w zasadzie odwrotność drugiego etapu. Jeśli nadal mamy więcej niż jeden średnik, oznacza to, że nadal musimy podzielić wynik przez 10 . Robimy to, przesuwając średniki o jedną pozycję w lewo i upuszczając jeden średnik, aż dotrzemy do lewego końca liczby lub pozostanie nam tylko jeden średnik (który jest samą kropką dziesiętną).
Teraz jest dobry czas, aby zmienić pierwszy (i być może tylko) z
;
powrotem w.
.Jeśli pozostały jeszcze średniki, osiągnęliśmy lewy koniec liczby, więc ponowne podzielenie przez 10 spowoduje wstawienie zer za kropką dziesiętną. Można to łatwo zrobić, zamieniając każdą pozostałą
;
na0
, ponieważ i tak są one bezpośrednio po przecinku.źródło
\B;
z^;
zaoszczędzić 1 bajt?-
przed;
.tak , 5 bajtów
Wypróbuj online! To pobiera dane wejściowe z góry stosu i pozostawia dane wyjściowe na górze stosu. Łącze TIO pobiera dane wejściowe z argumentów wiersza poleceń, które mogą przyjmować tylko liczby całkowite.
Wyjaśnienie
yup ma tylko kilku operatorów. Te użyte w tej odpowiedzi to ln (x) (reprezentowane przez
|
), 0 () (stała, zwracanie funkcji zerowej0
), - (odejmowanie) i exp (x) (reprezentowane przeze
).~
zamienia dwa górne elementy na stosie.To używa tożsamości
co implikuje to
źródło
LOLCODE ,
63, 56 bajtów7 bajtów zapisanych dzięki @devRicher!
Definiuje to funkcję „r”, którą można wywołać za pomocą:
lub jakikolwiek inny
NUMBAR
.Wypróbuj online!
źródło
ITZ A NUMBAR
w zadaniuI
?HOW DUZ I r YR n VISIBLE QUOSHUNT OF 1 AN n IF U SAY SO
(dodaj nowe wiersze) jest kilka bajtów krótszy i można go wywoływać za pomocąr d
,d
gdziekolwiekNUMBAR
.IZ
zamiast zDUZ
powodu reguły interpreterased , 575 + 1 (
-r
flaga) =723718594588576 bajtówWypróbuj online!
Uwaga:
.5
liczby zmiennoprzecinkowe, dla których wartość bezwzględna jest mniejsza niż 1, będą musiały zostać zapisane bez wiodącego 0, zamiast zamiast0.5
. Również liczba miejsc po przecinku jest równa , gdzien
jest liczba miejsc po przecinku w liczbie (więc podanie13.0
jako danych wejściowych da więcej miejsc po przecinku niż podanie13
jako danych wejściowych)To jest moje pierwsze zgłoszenie sed na PPCG. Pomysły na konwersję dziesiętną na unarną zaczerpnięto z tej niesamowitej odpowiedzi . Dzięki @seshoumara za prowadzenie mnie przez sed!
Ten kod wykonuje powtarzający się długi podział, aby uzyskać wynik. Podział zajmuje tylko ~ 150 bajtów. Konwersje w jednostkach dziesiętnych zajmują najwięcej bajtów, a kilka innych bajtów przechodzi na obsługę liczb ujemnych i danych zmiennoprzecinkowych
Wyjaśnienie
Wyjaśnienie dotyczące TIO
Edycje
s:s/(.)/(.)/g:y/\1/\2/g:g
aby zaoszczędzić 1 bajt przy każdej zamianie (łącznie 5)\n
zamiast;
jako separatora, to udało mi się skrócić „pomnożyć przez 10” substytucji zapisać 12 bajtów (dzięki @Riley i @seshoumara za pokazanie mi tego)źródło
JSFuck , 3320 bajtów
JSFuck to ezoteryczny i edukacyjny styl programowania oparty na atomowych częściach JavaScript. Używa tylko sześciu różnych znaków
()[]+!
do pisania i wykonywania kodu.Wypróbuj online!
źródło
return 1/this
byłby o około 76 bajtów dłuższy niżreturn+1/this
.[].fill.constructor('alert(1/prompt())')
2929 bajtów wklej.ubuntu.com/p/5vGTqw4TQQ dodaj()
2931OLEJ ,
14281420 bajtówNo cóż. Pomyślałem, że równie dobrze mogę spróbować, i ostatecznie udało mi się. Jest tylko jeden minus: pisanie zajmuje prawie tyle samo czasu, co pisanie.
Program jest podzielony na wiele plików, które mają wszystkie 1-bajtowe nazwy plików (i liczą się jako jeden dodatkowy bajt w moich obliczeniach bajtów). Niektóre pliki są częścią przykładowych plików w języku OIL, ale nie ma prawdziwego sposobu na ich konsekwentne wywoływanie (w OIL nie ma jeszcze ścieżki wyszukiwania ani niczego podobnego, więc nie uważam ich za standardową bibliotekę), ale oznacza to również, że (w momencie publikowania) niektóre pliki są bardziej szczegółowe niż to konieczne, ale zwykle tylko o kilka bajtów.
Obliczenia są dokładne z dokładnością do 4 cyfr, ale obliczenie nawet prostej wzajemności (takiej jak dane wejściowe
3
) zajmuje naprawdę dużo czasu (ponad 5 minut). Do celów testowych stworzyłem również niewielki wariant, który ma dokładność do 2 cyfr, a uruchomienie zajmuje tylko kilka sekund, aby udowodnić, że działa.Przepraszam za ogromną odpowiedź, chciałbym móc użyć jakiegoś spoilera. Mógłbym również umieścić większość tego na gist.github.com lub coś podobnego, w razie potrzeby.
Proszę bardzo:
main
217 bajtów (nazwa pliku się nie liczy dla bajtów):a
(sprawdza, czy dany ciąg znajduje się w danym innym ciągu), 74 + 1 = 75 bajtów:b
(łączy dwa podane ciągi), 20 + 1 = 21 bajtów:c
(biorąc pod uwagę symbol, dzieli dany ciąg przy jego pierwszym wystąpieniu), 143 + 1 = 144 bajtów (ten oczywiście oczywiście jest jeszcze grywalny):d
(podany ciąg otrzymuje pierwsze 4 znaki), 22 + 1 = 23 bajty:e
(podział wysokiego poziomu (ale z niebezpieczeństwem zerowego podziału)), 138 + 1 = 139 bajtów:f
(przesuwa kropkę o 4 pozycje w prawo; „dzieli” przez 10000), 146 + 1 = 147 bajtów:g
(sprawdza, czy ciąg zaczyna się od danego znaku), 113 + 1 = 114 bajtów:h
(zwraca wszystko oprócz pierwszego znaku danego ciągu), 41 + 1 = 42 bajty:i
(odejmuje dwie liczby), 34 + 1 = 35 bajtów:j
(podział niskiego poziomu, który nie działa we wszystkich przypadkach), 134 + 1 = 135 bajtów:k
(mnożenie), 158 + 1 = 159 bajtów:l
(zwracana wartość bezwzględna), 58 + 1 = 59 bajtów:m
(dodatek), 109 + 1 = 110 bajtów:źródło
J, 1 bajt
%
jest funkcją podającą odwrotność swoich danych wejściowych. Możesz uruchomić to w ten sposóbźródło
Taxi , 467 bajtów
Wypróbuj online!
Nie golfowany:
źródło
Vim,
108 bajtów / naciśnięć klawiszyPonieważ V jest wstecznie kompatybilny, możesz wypróbować online!
źródło
=
. Opierając się wyłącznie na innych makrach, rejestrach do przechowywania pamięci oraz klawiszach do nawigacji i modyfikacji danych. Byłoby o wiele bardziej skomplikowane, ale myślę, że byłoby tak fajnie! Myślę,f
że odegrałby ogromną rolę jako test warunkowy.6431.0
więc jest traktowany jako liczba zmiennoprzecinkowax86_64 język maszynowy Linux, 5 bajtów
Aby to przetestować, możesz skompilować i uruchomić następujący program C.
Wypróbuj online!
źródło
rcpss
oblicza jedynie przybliżoną wzajemność (około 12-bitową precyzję). +1C,
1512 bajtówWypróbuj online!
1613 bajtów, jeśli musi również obsługiwać wprowadzanie liczb całkowitych:Możesz więc zadzwonić za pomocą
f(3)
zamiastf(3.0)
.Wypróbuj online!
Dzięki @hvd za grę w golfa 3 bajty!
źródło
f(x)
się1/x
. Kiedy „funkcja” jest wykonywana, co może zdarzyć się dopiero w czasie wykonywania lub tak wcześnie, jak kompilator wydaje się (i może okazać się poprawny), technicznie nie jest to krok preprocesora.2
i-5
jako dane wejściowe. Zarówno2
i-5
są cyfry dziesiętne, zawierający się w zakresie od 0 do 9#define f 1./
też działa.MATLAB / Octave, 4 bajty
Tworzy uchwyt funkcji (o nazwie
ans
) do wbudowanejinv
funkcjiDemo online
źródło
05AB1E , 1 bajt
Wypróbuj online!
źródło
GNU sed ,
377362 + 1 (flaga r) = 363 bajtówOstrzeżenie: program zje całą pamięć systemową podczas próby uruchomienia i zajmie więcej czasu, niż będziesz gotów czekać! Poniżej znajduje się wyjaśnienie i szybka, ale mniej precyzyjna wersja.
Jest to oparte na odpowiedzi Retiny autorstwa Martina Endera. Liczę
\t
od wiersza 2 jako dosłowną tabulator (1 bajt).Moim głównym wkładem jest metoda konwersji z dziesiętnej na zwykłą jednoargumentową (linia 2) i odwrotnie (linia 5). Udało mi się znacznie zmniejszyć rozmiar kodu potrzebnego do tego (o około 40 bajtów łącznie), w porównaniu do metod pokazanych w poprzedniej wskazówce . Stworzyłem osobną odpowiedź ze wskazówkami , w której podaję gotowe do użycia fragmenty. Ponieważ 0 nie jest dozwolone jako dane wejściowe, zapisano jeszcze kilka bajtów.
Objaśnienie: aby lepiej zrozumieć algorytm podziału, najpierw przeczytaj odpowiedź Retina
Program jest teoretycznie poprawny, dlatego zużywa tyle zasobów obliczeniowych, że krok podziału jest uruchamiany setki tysięcy razy, mniej więcej w zależności od danych wejściowych, a użyte wyrażenie regularne powoduje koszmar cofania się. Szybka wersja zmniejsza precyzję (stąd liczbę kroków podziału) i zmienia wyrażenie regularne w celu ograniczenia cofania.
Niestety, sed nie ma metody bezpośredniego liczenia, ile razy odniesienie wsteczne pasuje do wzoru, jak w Retinie.
Aby uzyskać szybką i bezpieczną wersję programu, ale mniej precyzyjną, możesz wypróbować to online .
źródło
Japt , 2 bajty
Oczywistym rozwiązaniem byłoby
co jest dosłownie
1 / input
. Możemy jednak zrobić jedno lepiej:Jest to równoważne
input ** J
iJ
domyślnie ustawione na -1.Wypróbuj online!
Ciekawostka: podobnie jak
p
funkcja mocy, podobnieq
jak funkcja root (p2
=**2
,q2
=**(1/2)
); oznacza to, że równieżqJ
będzie działać, ponieważ-1 == 1/-1
i dlategox**(-1) == x**(1/-1)
.źródło
JavaScript ES6, 6 bajtów
Wypróbuj online!
JavaScript domyślnie dzieli się na zmiennoprzecinkowe.
źródło
APL, 1 bajt
÷
Oblicza odwrotność, gdy jest używana jako funkcja monadyczna. Wypróbuj online!Wykorzystuje zestaw znaków Dyalog Classic.
źródło
Cheddar , 5 bajtów
Wypróbuj online!
Wykorzystuje to
&
, co wiąże argument z funkcją. W tym przypadku1
jest związany z lewą stroną/
, co daje nam1/x
argumentx
. Jest to krótszy niż kanonicznyx->1/x
o 1 bajt.Alternatywnie, w nowszych wersjach:
źródło
(1:/)
samej liczby bajtówJava 8, 6 bajtów
Prawie taka sama jak odpowiedź JavaScript .
źródło
MATL , 3 bajty
Wypróbuj w MATL Online
Wyjaśnienie
źródło
Python, 12 bajtów
Jeden na 13 bajtów:
Jeden na 14 bajtów:
źródło
Mathematica, 4 bajty
Zapewnia dokładną wymierność, jeśli podasz dokładną wymierność, oraz wynik zmiennoprzecinkowy, jeśli podasz wynik zmiennoprzecinkowy.
źródło
ZX Spectrum BASIC, 13 bajtów
Uwagi:
SGN PI
Literalne liczby są konwertowane na binarne w czasie analizy, co kosztuje dodatkowe 6 bajtów, dlatego użycie zamiast literału1
.Wersja ZX81 dla 17 bajtów:
źródło
LET A=17
i przefaktoryzować aplikację do jednej linii1 PRINT SGN PI/A
, musisz zmienić wartość A, wpisując więcej, za każdym razem, gdy chcesz uruchomić program.Haskell , 4 bajty
Wypróbuj online!
źródło
R, 8 bajtów
Całkiem proste. Bezpośrednio wyprowadza odwrotność wejścia.
Innym, ale o 1 bajt dłuższym rozwiązaniem może być:
scan()^-1
lub nawetscan()**-1
dodatkowy bajt. Zarówno^
i**
symbol mocy.źródło
TI-Basic (TI-84 Plus CE),
652 bajtów-1 bajt dzięki Timtech .
-3 bajty
Ans
dzięki dzięki Григорий Перельман .Ans
i⁻¹
są jednobajtowymi tokenami .TI-Basic domyślnie zwraca ostatnią ocenianą wartość (
Ans⁻¹
).źródło
Ans
, więc możesz je zastąpićAns⁻¹
Galaretka , 1 bajt
Wypróbuj online!
źródło
Jelly programs consist of up to 257 different Unicode characters
.¶
i znak linii można używać zamiennie , więc podczas gdy tryb Unicode „rozumie” 257 różnych znaków, odwzorowują one na 256 tokenów.C, 30 bajtów
źródło
0
aby zapisać jeden bajt. Dzięki1.
temu będzie nadal kompilowany jako podwójny.1.
jest nadal traktowany jak liczba całkowita.echo -e "#include <stdio.h>\nfloat f(x){return 1./x;}main(){printf(\"%f\\\\n\",f(5));}" | gcc -o test -xc -
Output of./test
is0.200000
float f(float x){return 1/x;}
działałby poprawnie..
- C szczęśliwie domyślnie przekonwertuje(int)1
na(float)1
ze względu na typx
.