SORU
23 HAZİRAN 2014, PAZARTESİ


Neden kısa bir C ve C aritmetik işlemleri önce bir int dönüştürülmeli ?

Cevapları var this question görünen o C devralınan bu gereksinim için dönüştürme short int Sahne aritmetik işlemler C Olabilir seçiyorum senin beynin gibinedenbu ilk etapta C kullanılmaya başlandı? Neden sadece short bu işlemler?

Örneğin (dyp alınan bu yorum öneri):

short s = 1, t = 2 ;
auto  x = s   t ;

x tip olacaktırint.

CEVAP
23 HAZİRAN 2014, PAZARTESİ


Rationale for International Standard—Programming Languages—C Bölüm 6.3.1.8 bakacak olursakHer zamanki aritmetik dönüşümlerio diyorvurgu ileriye dönük benim):

Bu dönüşüm için Standart kurallar küçük bir tavsiye: K&R bu değişiklikler: değişiklikler eklendi ağırlayacak türleri ve değer koruma kuralları.Açık lisans eklendi bir “kesinlikle gerekli daha geniş,daha” yazın hesaplamalar Bu bazen daha küçük ve daha hızlı bir kod değil üretebilir beri doğru cevap daha sık söz. Hesaplamalar da olabilir “dar” olarak türü bu kadar uzun aynı kural, eğer bir gerçekleştirilen sonuç elde edilir. Açık çevrim her zaman elde etmek için kullanılabilir istediğiniz türde bir değer

draft C99 standard 6.3.1.8 Bölüm kapsarHer zamanki aritmetik dönüşümleriörneğin aritmetik ifadelerin işlenen bölüm 6.5.6 uygulananKatkı operatörleridiyor ki:

Eğer her iki işlenen aritmetik türü varsaher zamanki aritmetik dönüşümleronlara yapıldı.

Bölümünde benzer metin 6.5.5 buluruzÇarpma operatörleride. Bir durumdakısaişlenen ilktamsayı promosyonlar10 ** bölümünden uygulanırBoolean, karakterler ve tamsayılardiyor ki:

Eğer bir int orijinal türünü tüm değerleri temsil eder, değer. bir int dönüştürülür; aksi halde, işaretsiz bir tamsayı dönüştürülür. Bu tamsayı promosyon olarak adlandırılır.48)Tüm diğer türleri değişmeden tamsayı promosyonlar.

Bölümünden tartışma 6.3.1.1Gerekçesi veya Uluslararası Standart—Programlama Dilleri—Ctamsayı promosyonlaraslında daha ilginç olanı, seçici b/alıntı yapmak için gidiyorum c tam alıntı için çok uzun bir süre

Uygulamaları içine düştüiki ana Kampahangi karakterize olabilir gibiimzasız korumak ve değerini koruyarak.

[...]

imzasız yaklaşımı koruyarakiki küçük teşvik için çağrı imzalanmamış int işaretsiz türleri. Bu basit bir kuraldır, ve verimleri yürütme ortamı bağımsız olarak yazın.

değeri yaklaşımı koruyarakbu tür teşvik için çağrı eğer bu tür düzgün tüm değerleri temsil eğer int imzaladı özgün yazın ve aksi durumda işaretsiz için bu tür teşvik etmek için int. Eğer yürütme ortamı kısa temsil eder, bu nedenle bir şey gibi int daha küçük, işaretsiz short int; aksi takdirde olur imzalanmamış int.

Bu Inconsistent behaviour of implicit conversion between unsigned and bigger signed types gösterdiği gibi bazı durumlarda oldukça beklenmedik bazı sonuçları olabilir, bunun gibi daha bir sürü örnek var. Çoğu durumda bu operasyon beklendiği gibi çalışıyor bu sonuçlara rağmen.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011