SORU
27 Aralık 2014, CUMARTESİ


Gcc standart başlıklar o kadar çok parantez

Neden GCC başlık dosyaları sabit ifadeler böyle parantez çevrili.

#define INTMAX_MIN (-9223372036854775807LL)
#define INTMAX_MAX (9223372036854775807LL)

Eğer parantez ben atlarsanız farkı, bu yolu ne olurdu?

#define INTMAX_MIN -9223372036854775807LL
#define INTMAX_MAX 9223372036854775807LL

Ve neden 'L' soneki? Eğer aşağıdaki yazarsam aynı mı olurdu?

#define INTMAX_MIN -9223372036854775807
#define INTMAX_MAX 9223372036854775807

Gerçek bir yararı yoktur ya da her zaman aynı şey mi?

'L' duran uzun ve aynı zamanda C makroları parantez öneminin farkındayım; meraktan soruyorum soruyorum bunu. farkındayım

CEVAP
27 Aralık 2014, CUMARTESİ


Yazarsan

a = 7 INTMAX_MIN;

sözdizimi hatası, geçersiz bir ifade olurdu dışardan bakınca çünkü beklediğiniz. Ve genişliyor çünkü

a = 7 (-9223372036854775807LL);

nitekim hatası verir. Ama parantez olmadan büyütmek için:

a = 7 -9223372036854775807LL;

eğer bir hata, sizin istediğiniz belli olmamasına rağmen vermiyor.

Daha genel olarak, bu tüm tanımlayıcıları gibi görünen şeyler için açılımları ver tanımlar. Bir aritmetik ifadede, bir tanımlayıcı "" ama-9223372036854775807LL değildir. ilk ifade Ancak, ayraçlı bir ifade"". birincil ifade

Ve gerçek nedeni bu. Makro ne genişler böylecebenziyorbir şey için birincil bir ifade bubirincil bir ifade. Asla ne olacağını şaşıracaksınız. Programlama, sürpriz genellikle kötüdür.

Genellikle önemli değil, ama tanımlar yazanlar onları genellikle çalışmak istemiyorum. Onları her zaman çalışmak istiyorlar.

Sondaki LL bu tamsayı türü olarak edebi işaretleri genellikle (bu durumda) 64 bit olan long long,. LL sonek olmadan, edebi int, long int, ya da 64-bit değerleri destekleyen ilk hangisi long long int olarak yorumlanabilir. Bu tür aşağı çivileme değeri aşağı çivileme kadar önemli olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • Distractify

    Distractify

    1 Aralık 2011
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009