• Oshkor tip almashtirish Ayrim hollarda tiplarni almashtirish oshkor tarzda amalga oshiriladi. Quyidagi oshkormas tip almashtirish hollarda xatolik yuzaga keladi: int
  • Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr




    Download 6,33 Mb.
    Pdf ko'rish
    bet39/194
    Sana20.02.2024
    Hajmi6,33 Mb.
    #159185
    1   ...   35   36   37   38   39   40   41   42   ...   194
    Tiplarni o‘zgartirish 
    Amaliyotda ko‘p hollarda tiplarni o‘zgartirishga to‘g‘ri keladi. S# da tiplarni 
    o‘zgartirishning 2 xil ko‘rinishi bo‘lib oshkormas va oshkor. 
    Oshkormas tip almashtirish qiymat o‘zlashtirilayotganda avtomatik amalga 
    oshiriladi. Masalan, int yoki short tipiga mansub qiymat long tipiga mansub 
    o‘zgaruvchiga berilganda. Quyidagi misolda int qiymatlar yig‘indici long tipiga 
    o‘zlashtirilyapti: 


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    60 
    int
    a=34; 
    int
    b=45; 
    long
    c =a + b; 
    Console
    .WriteLine(
    "c="
    + c); 
    long tipi int tipiga nisbatan baytlar soni ko‘p bo‘lganligi uchun bu yerda xatolik 
    bo‘lmaydi. Quyidagi jadvalda C# tilidagi oshkormas almashtirishlar keltirilgan: 
    sbyte 
    short, int, long, float, double, decimal 
    byte 
    short, ushort, int, uint, long, ulong, float, double, decimal 
    short 
    int, long, float, double, decimal 
    ushort 
    int, uint, long, ulong, float, double, decimal 
    int 
    long, float, double, decimal 
    uint 
    long, ulong, float, double, decimal 
    long, 
    ulong 
    float, double, decimal 
    float 
    Double 
    char 
    ushort, int, uint, long, ulong, float, double, decimal 
    Oshkor tip almashtirish 
    Ayrim hollarda tiplarni almashtirish oshkor tarzda amalga oshiriladi. Quyidagi 
    oshkormas tip almashtirish hollarda xatolik yuzaga keladi: 
    int ni short ga – ma’lumot yo‘qotilishi mumkin 
    int ni uint ga – ma’lumot yo‘qotilishi mumkin 
    uint ni int ga – ma’lumot yo‘qotilishi mumkin 
    float ni int ga – ma’lumot yo‘qotilishi mumkin 
    ixtiyoriy sonli tipni char tipiga - ma’lumot yo‘qotilishi mumkin 
    decimal ni boshqa ixtiyoriy sonli tipga – o‘nli tip boshqacha tashkil qilinganligi 
    bois, ma’lumot yo‘qotilishi mumkin. 
    Bunday hollar uchun oshkor tip almashtirish qo‘llaniladi. Tipik sintaksisi 
    quyidagicha: 
    qabul_qiluvchi =(qabul_qiluvchi_tipi) ifoda; 
    long
    a; 
    int
    b; 


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    61 
    a = 2300; 
    b = (
    int
    )a;
    Biror tip boshqasiga o‘tkazilganda, kompilyator ushbu amalni bajarishi lozim. 
    long
    a; 
    int
    b; 
    a = 2300000000; 
    b = (
    int
    )a; 
    Console
    .WriteLine(b); 
    Mana shu dastur qismi bajarilganda ekranda -1994967296 soni hosil bo‘ladi. 
    Demak bu yerdan ko‘rinib turibdiki tiplarni almashtirganda shu tip diapozoniga 
    tushadigan qiymatlarni o‘tkazish zarur aks holda xatolik yuz beradi. C# tilida checked 
    operatori mavjud bo‘lib, stekning holatini aniqlash mumkin ya’ni xatolik yuz bergani 
    to‘g‘risida xabar beradi. 
    long
    a; 
    int
    b; 
    a = 2300000; 
    b = 
    checked
    ((
    int
    )a); 
    Tiplarni almashtirish xatoliklarni hosil qilishi mumkinligini inobatga olib, 
    xatoliklarni qayta ishlovchi try...catch konstruksiyasidan foydalanish ham mumkin. 
    Masalan: 
    long
    a; 
    int
    b; 
    a = 2300000000; 
    try

    b = 
    checked
    ((
    int
    )a); 
    Console
    .WriteLine(b); 

    catch

    Console
    .WriteLine(
    "Tiplarni almashtirganda xatolik yuz 
    berdi"
    ); 

    Quyidagi misolda suzuvchi nuqtali tipni butun son tipiga almashtirilyapti: 
    double
    d=10.23; 
    int
    i; 
    i = (
    int
    )(d + 2.4); 


    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr
    62 
    Keyingi misolda ishorasiz butun son char tipiga o‘tkaziladi: 
    ushort
    c = 38; 
    char
    sym = (
    char
    )c; 
    Console
    .WriteLine(sym); 
    Ekranga ASCII kodining 38-kodli & simvoli chiqariladi. Quyidagi misolda 
    decimal qiymat char ga o‘tkazilgan: 
    decimal
    x = 105m; 
    char
    sim = (
    char
    ) x;
    Console
    .WriteLine(sim);
    // i harfi hosil bo‘ladi 
    char
    s = 
    'i'

    decimal
    d = (
    decimal
    ) s;
    Console
    .WriteLine(d);
    // 105 qiymati qaytariladi
    Agar hosil qilingan natija, yangi tipga o‘tkazilmasa, tip almashtirish baribir 
    amalga oshiriladi. Ammo natija kutilayotgan qiymatni qaytarmaydi. Masalan, 
    int
    i = -1; 
    char
    symbol = (
    char
    ) i; 
    Ushbu tip almashtirish amalga oshirilmasligi lozim. Ammo natija sifatida ? 
    simvoli qaytariladi.
    Agar sonli tipli qiymatni harfiy tipga o‘tkazish lozim bo‘lsa, .NET bibliotekasi 
    klasslari metodlaridan foydalanish lozim. object klassi ToString() metodiga ega 
    bo‘lib, ushbu amalni bajarish mumkin: 
    int
    i = 10;
    string
    s = i.ToString(); 
    Shuningdek, harfiy tipli qiymatni sonli tipga o‘tkazish uchun Parse() 
    metodidan foydalaniladi: 
    string
    s = 100; 
    int
    i = int.Parse(s);
    Console.WriteLine(
    i+50); 

    Download 6,33 Mb.
    1   ...   35   36   37   38   39   40   41   42   ...   194




    Download 6,33 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturlash tillari va axborot-kommunikatsiya texnologiyalari 1-semestr

    Download 6,33 Mb.
    Pdf ko'rish