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

  • guau . .

    guau . .

    25 Ocak 2008
  • jat4011

    jat4011

    16 EKİM 2010
  • MrDevin521

    MrDevin521

    18 Temmuz 2010