Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class DataAndVariable
- {
- static void Main()
- {
- //Типовете данни са стандартните в C++, но с разширение за улеснение
- // Integer типовете са:
- //byte (0 to 255): unsigned, 8-bit
- //short (-32 768 to 32 767): signed, 16-bit
- //int (-2 147 483 648 to 2 147 483 647): signed 32-bit
- //long (-9 223 372 036 854 775 808 to 9 223 372 036 854 775 807): signed 64-bit
- //byte по подразбиране е unsigned. Добавянето на s пред декларацията (sbyte) го прави signed.
- //Останалите са signed по подразбиране и добавянето на u пред декларацията (ushort, uint, ulong) ги прави unsigned.
- //Типовете за реалните числа са отново float и double.
- //float (+-1.5*10^-45 to +-3.4*10^38): прецизност от 7 знака след дробната запетая, 32-bit.
- //double(+-5.0*10^-324 to +-1.7*10^308): прецизност от 15-16 знака след дробната запетая 64-bit.
- //Реалните числа тук се приемат като double по подразбиране. Дори когато правим промеливата
- //от тип float трябва да накараме програмата да третира числото което й подаваме като float
- //като добавим f след него.
- // float a=3.123; ще отчете грешка тъй като то третира 3.123 като double. Добавянето на f
- //накрая е вид кастване за да може компилатора да го разпознае като float.
- float flexample = 3.123f;
- Console.WriteLine("Example that float works: {0}", flexample);
- //При някои сметки с този тип променливи обаче, се появяват абнормалности. Сметките не винаги са вярни.
- double a = 1f;
- double b = 0.33f;
- double sum = 1.33f;
- bool equal = (a + b == sum);// Резултата е false. Сметката не е вярна.
- Console.WriteLine("Example: a={0}, b={1}, a+b={2}, the real sum={3}, the result is {4}", a, b, a + b, sum, equal);
- //Това е причина за добавяне на нов тип за реалните числа, който да прави коректни сметки.
- //decimal(+-1.0*10^-28 to +-7.9*10^28): прецизност от 28-29 знака след дробната запетая, 128-bit.
- //Отново имаме bool сърдържащ true или false. Стандартно.
- //Отново имаме char но този път той е 2-bit с цел за може да съдържа не само символ от Ascii но и от Unicode таблицата
- //което на практика означава, че може да съдържа всеки символ познат на компютъра.
- char letter = 'Я';
- Console.WriteLine("The code of {0} is {1}", letter, (int)letter);
- //Тип string тук е доста широко използван. Събирането на string-ове е стандартно с +, но командата която чете от
- //конзолата изглежда, чете само тип string, който трябва да бъде cast-ван с keyword-а Parse.
- Console.Write("Input number:");
- int number = int.Parse(Console.ReadLine());
- Console.WriteLine("Here is your number:{0}.", number);
- //Като за начало изглежда разочароващо за език по-високо ниво, но може би има конкретна цел.
- //Изцяло нов тип е представен в C# - object. Този тип може да съдържа всеки един от останалите
- //с минуса, че не могат да се прилагат математически операции върху него.
- object dataContainer = 5;
- Console.WriteLine("The value of dataContainer is: {0}.", dataContainer);
- dataContainer = "Five";
- Console.WriteLine("The new value of dataContainer is: {0}.", dataContainer);
- dataContainer += " Six";
- Console.WriteLine("The new value of dataContainer is: {0}.", dataContainer);
- //Както при C++ и тук се явява проблем, използването на променлива без да е инициализирана предварително.
- //Тук обаче променливите имат стойност по подразбиране. За ги използваме обаче, използваме ключовата дума new.
- int example = new int();
- Console.WriteLine("Here is example with its default value: {0}", example);
- //Ключовата дума new се използва за динамични данни в C++, но тук не изглежда да е така или все още не разбирам
- //в дълбочина реалното използване на new.
- //Използвайки 0x пред число (не пред знака му), показва че числото е в 16-ична бройна система.
- //int обаче ще го запише като десетично.
- int numberInHex = -0x10;
- int numberInDec = -16;
- Console.WriteLine("This is the number in hexadecimal: {0}. And this is the number in decimal: {1}", numberInHex, numberInDec);
- // \ се явява Escape символ. Ако искам да напиша ' без компилатора да отчете че отварям кавички за тип char
- // трябва да използвам backslash. \' за кавичка, \" за нормални кавички, \n за нов ред, \t за табулация, \\ за backslash в текст.
- Console.WriteLine("\"This text is quotation marks thanks to the escape symbol \\.\"");
- //Ключовата дума (или по-скоро символ) @ се явява много полезен инструмент
- //за форматиране на текст. Използва се по следният начин:
- string format = @"
- This is nicely
- formatted text.
- Every tabulation, space,
- or new line is taken in account
- when using the @ command.
- Also there is no need
- for using escape symbols.";
- Console.WriteLine(format);
- //Нито един от стандартните типове не може да бъде null. Добавянето на въпросителна след
- //типа на данната, при инициализацията прави инстанция която позволява променливата да
- //бъде и null: int? a; double? b;
- int? someInt = null;
- Console.WriteLine("This is integer with NUll value --> " + someInt + " (in other words has no value).");
- //Cast-ването е като в C++: int a=(int)'a'. Добавяме типа към който искаме да cast-ваме
- // в скоби, преди стойността.
- int castedA = (int)'A';
- Console.WriteLine("This is the code of \"A\": {0}, casted from char.", castedA);
- //И като последно различно нещо Placeholder-ите.
- //Console.WriteLine("{0} {1} {2}"); Цифрите заградени в къдрави скоби се наричат
- //placehold-ери. Те няма да бъдат отпечатани като текст в изходния поток. Те са
- //запазени места за друго съдържание.
- //Console.WriteLine("{0} {1} {2}", placehodler 0, placeholder 1, placeholder 3).
- //Placehold-ерите ще бъдат заместени с нещата изброени със запетаи след текста.
- //Съответно в примера {0} се замества с placeholder 0 и така нататък.
- string pc0 = "Placeholder 0", pc1 = "placeholder 1", pc2 = "placeholder 2";
- Console.WriteLine("{0}, {1}, {2}.", pc0, pc1, pc2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement