Neden boyutu int boyutu(int) doğru mu yanlış mı? | Netgez.com
SORU
29 EKİM 2012, PAZARTESİ


Neden boyutu int boyutu(int) doğru mu yanlış mı?

sizeof operatör herhangi bir veri türü ve anlatım boyutunu hesaplamak için kullanılır ve işlenen bir ifade olduğunda, parantez göz ardı edilebilir.

int main()
{
        int a;

        sizeof int;
        sizeof( int );
        sizeof a;
        sizeof( a );

        return 0;
}

sizeof ilk kullanım Diğerleri doğru olsa da yanlış.

Gcc kullanarak derlenmiş olduğunda, aşağıdaki hata iletisi verilir:

main.c:5:9: error: expected expression before ‘int’

Benim sorum C standart böyle bir operasyona izin vermiyor neden olur. sizeof int herhangi bir belirsizlik neden olur?

CEVAP
29 EKİM 2012, PAZARTESİ


Aşağıdaki belirsiz olabilir:

sizeof int *   1

(sizeof (int*)) 1 (sizeof(int)) * ( 1)?

Belli ki C dili belirsizlik çözmek için bir kural tanıttı olabilir, ama rahatsız etmedi neden acaba. Dil gibi duruyor, bir tür belirleyici görünüyor asla "çıplak" bir ifade, ve öyle olması için kurallara gidermek ister ikinci * türü veya bir aritmetik operatör.

Mevcut gramer zaten sizeof (int *) 1 potansiyel belirsizliÄŸi gidermek. (sizeof(int*)) 1deÄŸilsizeof((int*)( 1)).

C biraz benzer bir işlev tarzı dökme sözdizimi ile çözmek için bir sorun var. int(0) yazma ve typedef int *intptr; intptr(0);, yazabilirsiniz ama int*(0) yazamazsın. Bu durumda, kararda "türü bir basit tür adı olması gerekir, ya da sonunda noktalama işareti boşluk var olabilecek herhangi bir eski tip kimliği olamaz." çıplak. Belki sizeof aynı kısıtlamaları ile tanımlanmış olabilir, emin değilim.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • NightShader1

    NightShader1

    25 Temmuz 2006