Ką reiškia „statinė“ reikšmė C?

C kode įvairiose vietose pamačiau žodį static ; tai kaip statinė funkcija / klasė C # (kur įgyvendinimas yra dalijamasi tarp objektų)?

937
21 февр. nustatė Dovydas , vasario 21 d 2009-02-21 09:47 '09 ne 9:47 2009-02-21 09:47
@ 20 atsakymų
  • Statinis kintamasis funkcijos viduje išlaiko savo vertę tarp skambučių.
  • Statinis pasaulinis kintamasis arba funkcija „matoma“ tik faile, deklaruotame

(1) yra labiau pašalinė tema, jei esate pradedantysis, todėl čia yra pavyzdys:

 #include <stdio.h> void foo() { int a = 10; static int sa = 10; a += 5; sa += 5; printf("a = %d, sa = %d\n", a, sa); } int main() { int i; for (i = 0; i < 10; ++i) foo(); } 

Spaudiniai:

 a = 15, sa = 15 a = 15, sa = 20 a = 15, sa = 25 a = 15, sa = 30 a = 15, sa = 35 a = 15, sa = 40 a = 15, sa = 45 a = 15, sa = 50 a = 15, sa = 55 a = 15, sa = 60 

Tai naudinga tais atvejais, kai funkcija turi išlaikyti tam tikrą būseną tarp skambučių ir nenorite naudoti pasaulinių kintamųjų. Tačiau atminkite, kad ši funkcija turėtų būti naudojama labai retai - tai daro jūsų kodą nesaugus ir sunkiau suprasti.

(2) Plačiai naudojamas kaip prieigos kontrolės funkcija. Jei turite .c failą, kuris įgyvendina tam tikras funkcijas, jis paprastai suteikia tik kelioms „atviroms“ funkcijoms. Likusios funkcijos turi būti static , kad vartotojas negalėtų jų pasiekti. Tai yra kapsuliavimas, gera praktika.

Wikipedia citata:

C programavimo kalba statinis naudojamas su visuotiniais kintamaisiais ir funkcijomis, kad būtų galima įdiegti turinį. Vietiniuose kintamuosiuose statinis naudojamas kintamojo saugojimui statiškai paskirstytoje atmintyje, o ne automatiškai paskirstant atmintį. Nors kalba nenurodo atminties diegimo rūšies, statiškai priskirta atmintis dažniausiai yra rezervuojama programos duomenų segmente sudarymo metu, o automatiškai priskirta atmintis yra įgyvendinama kaip pereinamojo skambučio kaminas.

Daugiau ir čia .

Ir atsakydamas į antrąjį klausimą, jis neatrodo kaip C #.

Tačiau C + + static naudojamas ir klasių atributams apibrėžti (bendrai naudoti visiems tos pačios klasės objektams) ir metodams. C klasių nėra, todėl ši funkcija neturi reikšmės.

1315
21 февр. Atsakymą pateikė Eli Bendersky 21 vasaris. 2009-02-21 09:51 '09 9:51 am 2009-02-21 09:51

Čia dar yra nenaudojamas kitas naudojimas, ir tai yra masyvo tipo deklaracijos dalis kaip funkcijų argumentas:

 int someFunction(char arg[static 10]) { ... } 

Šiame kontekste ji rodo, kad argumentai, perduoti šiai funkcijai, turi būti rūšies char ir bent 10 elementų. Daugiau informacijos žr. Mano klausimas čia .

208
01 мая '13 в 10:13 2013-05-01 10:13 atsakymą svajonė davė gegužės 13 d. 13, 10:13 2013-05-01 10:13

Trumpas atsakymas ... priklauso.

  • Statiniai vietiniai kintamieji nepraranda savo vertės tarp funkcijų skambučių. Kitaip tariant, jie yra pasauliniai kintamieji, tačiau yra susieti su vietine funkcija, kurioje jie yra apibrėžti.

  • Statiniai pasauliniai kintamieji nėra matomi už C failo, kuriame jie yra apibrėžti.

  • Statinės funkcijos nėra matomos už C failo, kuriame jos yra apibrėžtos.

149
21 февр. Atsakymą pateikė cmcginty 21 vasaris. 2009-02-21 09:56 '09 9:56 val. 2009-02-21 09:56

Kelių failų kintamasis pavyzdys

Čia aš parodysiu, kaip statinis paveikia funkcijų apibrėžimų apimtis keliuose failuose.

kintamosios srovės

 #include <stdio.h>  extern int i;  static int si = 0; void a() { i++; si++; puts("a()"); printf("i = %d\n", i); printf("si = %d\n", si); puts(""); } 

main.c

 #include <stdio.h> int i = 0; static int si = 0; void a(); void m() { i++; si++; puts("m()"); printf("i = %d\n", i); printf("si = %d\n", si); puts(""); } int main() { m(); m(); a(); a(); return 0; } 

GitHub aukštyn .

Sudaryti ir paleisti:

 gcc -c ac -o ao gcc -c main.c -o main.o gcc -o main main.o ao 

Išeiti:

 m() i = 1 si = 1 m() i = 2 si = 2 a() i = 3 si = 1 a() i = 4 si = 2 

aiškinimas

  • si yra du atskiri si , kintamieji kiekvienam failui.
  • yra vienas bendras kintamasis i

Kaip įprasta, tuo mažesnė taikymo sritis, tuo geriau, jei visada galite deklaruoti static kintamuosius.

C programoje failai dažnai naudojami „klasėms“, o static kintamieji - privatūs statiniai klasės nariai.

Kokie standartai apie tai sako

C99 N1256 Projektas 6.7.1 „Saugojimo klasės specifikatoriai“ teigia, kad static yra „saugojimo klasės specifikatorius“.

6.2.2 / 3 „Tapatybės nuorodos“ sako, kad static reiškia internal linkage :

Jei objekto ar funkcijos failo srities identifikatoriaus deklaracijoje yra statinio saugojimo klasės specifikatorius, identifikatorius yra vidaus ryšys.

ir 6.2.2 / 2 sako, kad internal linkage elgiasi taip, kaip mūsų pavyzdyje:

Vertimo vienetų ir bibliotekų, sudarančių visą programą, rinkinyje kiekviena konkretaus identifikatoriaus deklaracija su išorine nuoroda žymi tą patį objektą ar funkciją. Tame pačiame vertimo vienete kiekviena identifikatoriaus deklaracija su vidine nuoroda reiškia tą patį objektą arba funkciją.

kur vertimo vienetas yra pirminis failas po išankstinio apdorojimo.

Kaip GCC tai įgyvendina ELF (Linux)?

Su STB_LOCAL privaloma.

Jei rengiame:

 int i = 0; static int si = 0; 

ir analizuokite simbolių lentelę su:

 readelf -s main.o 

išvestyje yra:

 Num: Value Size Type Bind Vis Ndx Name 5: 0000000000000004 4 OBJECT LOCAL DEFAULT 4 si 10: 0000000000000000 4 OBJECT GLOBAL DEFAULT 4 i 

taigi, privalomumas yra vienintelis reikšmingas skirtumas tarp jų. Value yra tik jų kompensacija .bss skiltyje, todėl tikimės, kad ji bus kitokia.

STB_LOCAL dokumentuotas ELF specifikacijoje šiuo adresu : http://www.sco.com/developers/gabi/2003-12-17/ch4.symtab.html :

STB_LOCAL Vietiniai simboliai nėra matomi už objekto failo, kuriame yra jų apibrėžimas. Vietiniai to paties pavadinimo simboliai gali egzistuoti keliose rinkmenose nesikišdami vienas į kitą.

todėl jis idealiai tinka static .

Kintamieji be statikos yra STB_GLOBAL , o specifikacijoje nurodyta:

Kai nuorodų redaktorius sujungia kelis perkeliamus objekto failus, jis neleidžia keleto STB_GLOBAL simbolių apibrėžimų, turinčių tą patį pavadinimą.

kuris atitinka keletą netarčių apibrėžčių klaidų.

Jei pasukite optimizavimą -O3 , tada simbolis „ si visiškai pašalinamas iš simbolių lentelės: jokiu atveju jis negali būti naudojamas iš išorės. TODO kodėl turiu statinius kintamuosius simbolių lentelėje, kai nėra optimizavimo? Ar jie gali būti naudojami nieko? Galima derinti.

Taip pat žr

C ++ anoniminės vardų vietos

„C ++“ galite naudoti anonimines vardų vietas vietoj statinių, kurios suteikia panašų efektą, bet papildomai slepia tipo apibrėžimus: Nenurodytos / anoniminės vardų erdvės nuo statinių funkcijų

48
15 янв. Ciro Santilli atsakymas 改造 改造 中心 六四 事件 法轮功 Jan 15 2013-01-15 16:41 '13, 4:41 val. 2013-01-15 16:41

Tai priklauso nuo:

 int foo() { static int x; return ++x; } 

Funkcija grąžins 1, 2, 3 ir tt --- Kintamasis nėra ant kamino.

AC:

 static int foo() { } 

Tai reiškia, kad ši funkcija taikoma tik šiame faile. Taigi AC ir bc gali turėti skirtingus foo() s, o foo netaikomas bendrinamiems objektams. Todėl, jei apibrėžėte „foo“ ac, negalėjote prieiti prie jos iš bc arba iš kitų vietų.

Daugumoje C bibliotekų visos „privačios“ funkcijos yra statinės ir dauguma „viešųjų“ nėra.

34
21 февр. atsakymą pateikė Artyom 21 vasaris. 2009-02-21 09:57 '09 ne 9:57 2009-02-21 09:57

Žmonės nuolat sako, kad „statinis“ C turi dvi reikšmes. Siūlau alternatyvų peržiūros būdą, kuris suteikia jai vieną reikšmę:

  • „Statinio“ elemento taikymas elementui sukelia šį elementą su dviem savybėmis: (a) jis nėra rodomas už dabartinio regiono; b) jis yra patvarus.

Priežastis, kodėl tai turi dvi reikšmes, yra tai, kad C kiekvienas elementas, kuriam gali būti taikomas „statinis“, jau turi vieną iš šių dviejų savybių, todėl atrodo, kad šis konkretus naudojimas yra susijęs tik su kitu.

Pavyzdžiui, apsvarstykite kintamuosius. Kintamieji, deklaruoti už funkcijų ribų, jau turi pastovumą (duomenų segmente), todėl „statinio“ naudojimas gali padaryti juos nematomus už dabartinio regiono (kompiliavimo vieneto). Priešingai, viduje funkcijose deklaruoti kintamieji nebeturi matomumo už dabartinės apimties (funkcijos) ribų, todėl „statinio“ naudojimas gali juos padaryti tik nuolatinius.

"Statinio" taikymas funkcijoms yra panašus į tai, kaip jis taikomas visuotiniams kintamiesiems - kodas būtinai yra pastovus (bent jau kalba), todėl galima pakeisti tik matomumą.

PASTABA. Šie komentarai taikomi tik C. C + + statiškų metodų taikymas klasei suteikia raktiniam žodžiui kitokią reikšmę. Panašiai ir argumentų masyvo C99 išplėtimui.

19
27 апр. Atsakymą pateikė PMar balandžio 27 d 2016-04-27 16:47 '16 at 16:47 pm 2016-04-27 16:47

Iš „Wikipedia“:

C programavimo kalba statinis yra naudojamas su visuotiniais kintamaisiais ir funkcijomis, kad būtų galima nustatyti apimties failą. Vietiniuose kintamuosiuose statinis naudojamas kintamojo saugojimui statiškai paskirstytoje atmintyje vietoj automatiškai priskiriamos atminties. Nors kalba nenurodo jokios atminties įgyvendinimo, statiškai paskirstyta atmintis paprastai yra saugoma programos duomenų segmente kompiliavimo metu, o automatiškai priskirta atmintis paprastai įgyvendinama kaip pereinamojo skambučio kaminas.

12
21 февр. Atsakymas pateikiamas OscarRyz 21 vasario mėn. 2009-02-21 09:52 '09 9:52 am. 2009-02-21 09:52

static reiškia skirtingus dalykus skirtinguose kontekstuose.

  • Jūs galite deklaruoti statinį kintamąjį funkcijoje C. Šis kintamasis matomas tik funkcijoje, tačiau jis elgiasi kaip pasaulinis, nes jis yra tik inicijuotas ir išsaugo jo vertę. Šiame pavyzdyje kiekvieną kartą, kai skambinate „ foo() , jis spausdins vis daugiau. Statinis kintamasis inicijuojamas tik vieną kartą.

     void foo () { static int i = 0; printf("%d", i); i++ } 
  • Kitas statinio naudojimo būdas yra tai, kad .c faile .obj funkciją arba pasaulinį kintamąjį, bet nenorite, kad jo simbolis būtų matomas ne .obj faile. Pavyzdžiui.

     static void foo() { ... } 
12
21 февр. Atsakymas pateikiamas m-sharp 21 vasario mėn. 2009-02-21 09:55 '09 9:55 val 2009-02-21 09:55

Nenorėčiau atsakyti į senąjį klausimą, bet nemanau, kad kas nors paminėjo, kaip K R tai paaiškina C programavimo kalbos A4.1 skyriuje.

Trumpai tariant, žodis statinis naudojamas su dviem reikšmėmis:

  • Statinis yra vienas iš dviejų saugojimo klasių (kitas automatiškai). Statinis objektas išlaiko savo vertę tarp skambučių. Objektai, deklaruoti už visų blokų, visada yra statiniai ir negali būti automatiniai.
  • Bet kai static (didelis dėmesys jo naudojimui kode kaip raktinis žodis) naudojamas kartu su skelbimu, jis suteikia šį vidinį objekto ryšį, todėl jį galima naudoti tik šiame vertimo vienete. Bet jei raktinis žodis naudojamas funkcijoje, jis pakeičia objekto saugojimo klasę (objektas bus matomas tik šios funkcijos viduje). Statinio priešingas yra išorinis raktinis žodis, kuris suteikia išorinę nuorodą į objektą.

Peter Van Der Linden šias dvi vertes pateikia ekspertų programavimo programoje:

  • Funkcijos viduje jos vertė yra tarp skambučių.
  • Funkcijos lygiu rodomas tik šiame faile.
6
31 марта '16 в 2:49 2016-03-31 02:49 atsakymas į nobizmą kovo 31 d. 16 d. 2:49 2016-03-31 02:49

Jei statinėje funkcijoje deklaruojate kintamąjį, jo vertė nebus išsaugota funkcijų skambučių sklype ir bus galima, kai dar kartą skambinate.

Jei paskelbiate visuotinį kintamąjį statinį, jo apimtis bus ribota faile, kuriame jį paskelbėte. Tai yra šiek tiek saugesnis nei įprastas pasaulinis, kurį galima perskaityti ir keisti per visą programą.

5
21 февр. atsakymą pateikė Sam Hoice , vasario 21 d. 2009-02-21 09:52 '09 9:52 am. 2009-02-21 09:52

C, statinis, turi dvi reikšmes, priklausomai nuo jų naudojimo apimties. Pasaulyje, kai objektas deklaruojamas failų lygmeniu, tai reiškia, kad šis objektas rodomas tik šiame faile.

Bet kurioje kitoje srityje jis deklaruoja objektą, kuris išlaiko savo vertę tarp skirtingų laikų, kuriais įvedamas konkretus plotas. Pavyzdžiui, jei int apdorojama procedūros metu:

 void procedure(void) { static int i = 0; i++; } 

„i“ vertė inicijuojama į nulį, kai procedūra pirmą kartą skambinama, ir vertė išsaugoma kiekvieną kartą, kai procedūra vadinama. jei „i“ buvo atspausdinta, ji parodo 0, 1, 2, 3, ...

5
21 февр. atsakymą pateikė Gary vasario 21 d. 2009-02-21 10:20 '09, 10:20, 2009-02-21 10:20

Jei ją paskelbiate faile mytest.c:

 static int my_variable; 

Tuomet šis kintamasis matomas tik iš šio failo. Kintamasis negali būti eksportuojamas bet kur.

Jei deklaruojate funkciją, kintamojo vertė išsaugos savo vertę kiekvieną kartą, kai skambinama.

Statiška funkcija negali būti eksportuojama iš failo ribų. Todėl paslėpdami funkcijas „.c“ galite paslėpti funkcijas ir kintamuosius.

4
11 марта '09 в 13:47 2009-03-11 13:47 atsakymas pateikiamas 2009 m. kovo 11 d., 09:47 , 13:47 2009-03-11 13:47

Svarbu pažymėti, kad statiniai kintamieji funkcijose inicijuojami, kai jie pirmą kartą įeina į šią funkciją ir yra išsaugoti net po to, kai baigiamas skambutis; rekursinių funkcijų atveju statinis kintamasis inicijuojamas tik vieną kartą ir taip pat saugomas visuose rekursiniuose skambučiuose ir net po funkcijų skambučio užbaigimo.

Jei kintamasis buvo sukurtas už funkcijos ribų, tai reiškia, kad programuotojas gali naudoti tik kintamąjį šaltinio faile, deklaruotame kaip kintamąjį.

3
01 мая '14 в 9:30 2014-05-01 09:30 atsakymas pateikiamas „ Starhowl“ gegužės 1 d. 14 d. 9:30 2014-05-01 09:30

Statiniai C kintamieji turi programos trukmę.

Jei jie yra apibrėžti funkcijoje, jie turi vietinę taikymo sritį, ty jie gali būti pasiekiami tik šiose funkcijose. Statinių kintamųjų vertė saugoma tarp funkcijų skambučių.

Pavyzdžiui:

 void function() { static int var = 1; var++; printf("%d", var); } int main() { function(); // Call 1 function(); // Call 2 } 

Pirmiau minėtoje programoje var saugomas duomenų segmente. Jo gyvenimas yra visa C programa.

Skambinus funkcijai 1, var tampa 2. Po to, kai skambina funkcija 2, var tampa 3.

var nėra sunaikinta tarp funkcijų skambučių.

Jei var turėjo ne stacionarų ir vietinį kintamąjį, jis būtų saugomas kamino segmente C programoje. Kadangi funkcijų grąžinimo rėmas sunaikinamas po funkcijos grąžinimo, var taip pat sumažėja.

Inicijuoti statiniai kintamieji yra saugomi C programos duomenų segmente, o neinicijuoti kintamieji yra saugomi BSS segmente.

Kita statinė informacija: jei kintamasis yra visuotinis ir statinis, jis turi C programos galiojimo laiką, tačiau jis turi taikymo sritį. Jis matomas tik šiame faile.

Norėdami išbandyti šiuos veiksmus:

file1.c

 static int x; int main() { printf("Accessing in same file%d", x): } 

file2.c

  extern int x; func() { printf("accessing in different file %d",x); // Not allowed, x has the file scope of file1.c } run gcc -c file1.c gcc -c file2.c 

Dabar pabandykite susieti juos naudodami:

 gcc -o output file1.o file2.o 

Tai suteiks sąsajos klaidą, nes x turi failą1.c, o nuoroda negalės išspręsti nuorodos į kintamąjį x, naudojamą faile 2.c.

Literatūra:

3
21 марта '15 в 20:08 2015-03-21 20:08 atsakymą pateikė Sahil Manchanda kovo 21 d., 15 val. 20:08 2015-03-21 20:08

Taip pat reikėtų pažymėti, kad static galima naudoti 4 skirtingais būdais.

 to create permanent storage for local variables in a function. to specify internal linkage. to declare member functions that act like non-member functions. to create a single copy of a data member. 
2
07 янв. atsakymas pateikiamas amrx Jan 07 2016-01-07 02:03 '16 at 2:03 2016-01-07 02:03

Statinis kintamasis yra specialus kintamasis, kurį galite naudoti funkcijoje, ir saugo duomenis tarp skambučių ir neištrina tarp skambučių. Pavyzdžiui:

 void func(){ static int count; // If you don't declare its value, the value automatically initializes to zero printf("%d, ", count); count++; } void main(){ while(true){ func(); } } 

Išeiti:

0, 1, 2, 3, 4, 5, ...

2
22 дек. Atsakymas duotas Yagel gruodžio 22 d. 2014-12-22 00:59 '14 ne 0:59 2014-12-22 00:59

Yra 2 atvejai:

(1) Vietiniai kintamieji, paskelbti static : skiriami duomenų segmentui, o ne kaminai. Jo vertė išsaugoma, kai funkcija dar kartą skambinama.

(2) Visuotiniai kintamieji arba funkcijos, paskelbtos static : nematomas išorinis kompiliavimo vienetas (t. Y. Yra vietiniai simboliai simbolių lentelėje, kai jie yra privalomi).

1
03 июня '18 в 16:01 2018-06-03 16:01 Atsakymą davė Jonny Kong birželio 3 d. 18 d. 4:01 val. 2018-06-03 16:01

Kintamojo statinė vertė saugoma tarp įvairių funkcijų skambučių, o taikymo sritis apsiriboja vietiniu bloku.

1
23 марта '14 в 8:48 2014-03-23 08:48 Atsakymą davė Jonathon kovo 14 d. 14 d. 8:48 2014-03-23 ​​08:48

Norėčiau paaiškinti bubblesort pavyzdį. Čia galite pamatyti, kaip jis veikia. Nepaisant atsargumo naudojant statinius kintamuosius situacijose su keliais sriegiais, statiniai kintamieji yra naudingi. Pavyzdžiui, statinis kintamasis gali turėti vidinę būsenos informaciją tarp funkcijų skambučių.

bubblesort.c rodo funkciją, pavadintą „bubortort“, kartu su palaikymo funkcijomis, kuriomis galima stebėti atliktų mainų skaičių. count kintamasis turi statinę saugojimo klasę, nes ji yra paskelbta už bet kurio bloko ribų. Statinis determinatorius sukelia šį kintamąjį vidiniu būdu, užtikrindamas, kad count kintamasis negalėtų būti tiesiogiai pasiekiamas jokia kita funkcija, išskyrus bubblesort.c . clearcount funkcija ir keitimasis „ onepass funkcija yra vieninteliai kodo segmentai, kurie keičia count . Intercom leidžia kitiems failams, susijusiems su bubblesort.c , naudoti identifikatorių, skaitiklį, netrikdant šio failo skaičiaus.

Trijose funkcijose „ clearcount , „ getcount ir „ bubblesort yra išorinis ryšys ir yra prieinami iš išorės. Atkreipkite dėmesį, kad statinisonepass klasifikatorius suteikia šiai funkcijai tokią vidinę onepass , kad ji nebūtų prieinama iš šio failo. Naudojant tinkamas saugojimo ir rišimo klases, bubblesort slepia jos įgyvendinimo informaciją iš savo skambintojų.

bubblesort.c

Funkcija, kuri suskirsto sveikųjų skaičių masyvą ir skaičiuoja procesuose vykstančių mainų skaičių.

 static int count = 0; static int onepass(int a[], int n) {  int i; int interchanges = 0; int temp; for (i = 0; i < n - 1; i++) if (a[i] > a[i+1]) { temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; interchanges = 1; count++; } return interchanges; } void clearcount(void) { count = 0; } int getcount(void) { return count; } void bubblesort(int a[], int n) {  int i; for (i = 0; i < n - 1; i++) if (!onepass(a, n - i)) break; } 

bubblesorttest.c

 #include <stdio.h> #define ARRAYSIZE 10 void bubblesort(int a[], int n); int getcount(); int main(void) { int i; int a[ARRAYSIZE]; printf("Enter %d integers to sort\n", ARRAYSIZE); for (i = 0; i < ARRAYSIZE; i++) scanf("%d", a+i); printf("Array follows:\n"); for (i = 0;i < ARRAYSIZE; i++) printf("%2d: %4d\n", i, a[i]); bubblesort(a, ARRAYSIZE); printf("Sorted array follows:\n"); for (i = 0; i < ARRAYSIZE; i++) printf("%2d: %4d\n", i, a[i]); printf("Number of ineterchanges: %d\n", getcount()); return 0; } 

Nurodykite kiekvienam objektui ir funkcijai bubort.c, jei reikia , nurodykite skliautą ir inkaro klasę.

Atsakymas:

onepass funkcija yra sujungta. Kitos funkcijos yra domofonas. Funkcijos neturi saugojimo klasės. count identifikatorius turi vidinę komunikaciją ir statinį saugojimą. Visi kiti kintamieji neturi inkaravimo ir automatinio saugojimo.

Šaltinis: UNIX sistemų programavimas: bendravimas, sutapimas ir antrasis leidimas, Kay Robbins ir Steven Robbins

0
04 дек. atsakymas pateikiamas snr 04 dec. 2017-12-04 16:18 '17 at 16:18 2017-12-04 16:18

Taip pat galite nustatyti metodus ir kintamuosius, kad juos būtų galima naudoti naudojant klasės pavadinimą nesukuriant objekto kitoje klasėje.

Pavyzdys yra

 public class Temperature { public static double CelsiusToFahrenheit(string temperatureCelsius) { // Convert argument to double for calculations. double celsius = Double.Parse(temperatureCelsius); // Convert Celsius to Fahrenheit. double fahrenheit = (celsius * 9 / 5) + 32; return fahrenheit; } } class Converter { void Main() { double F= Temperature.CelsiusToFahrenheit(78); Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F); } } 
-1
04 дек. atsakymas duotas yash darak 04 dec. 2017-12-04 16:18 '17 at 16:18 2017-12-04 16:18

Kiti klausimai apie žymes arba Užduoti klausimą