2011-12-28 24 views
9

संभव डुप्लिकेट:
Why are C character literals ints instead of chars?क्यों आकार ('ए') सी में 4 है?

#include<stdio.h> 
int main(void) 
{ 
    char b = 'c'; 
    printf("here size is %zu\n",sizeof('a')); 
    printf("here size is %zu",sizeof(b)); 
} 
यहाँ

निर्गम (लाइव डेमो here देखें।) है

here size is 4 
here size is 1 

मैं नहीं मिल रहा है क्यों sizeof('a') 4 है?

+0

देखें के बराबर है [क्यों वर्ण के बजाय सी चरित्र शाब्दिक ints कर रहे हैं?] (Http://stackoverflow.com/questions/433895/why-are-c- चरित्र-शाब्दिक-ints-बजाय के- वर्ण) –

उत्तर

10

क्योंकि सी चरित्र स्थिरांक में, जैसे 'ए' में int प्रकार है। ,

शायद आश्चर्यजनक रूप से, सी में चरित्र स्थिरांक प्रकार int के हैं तो sizeof ('एक') sizeof (int) (हालांकि यह एक अन्य क्षेत्र है है:

इस suject के बारे में C FAQ नहीं है जहां सी ++ अलग है)।

3

डिफ़ॉल्ट रूप से 'ए' एक पूर्णांक है और इसके कारण आपको अपनी मशीन 4 बाइट्स में int का आकार मिलता है।

char 1 बाइट्स है और इसके कारण आपको 1 बाइट मिलते हैं।

10

प्रसिद्ध उद्धरणों के बीच लिखे गए चरित्र के संबंध में प्रसिद्ध C पुस्तक - The C programming LanguageKernighan & Ritchie से प्रसिद्ध रेखा निम्नलिखित है।

A character written between single quotes represents an integer value equal to the numerical value of the character in the machine's character set.

तो sizeof('a')sizeof(int)

संबंधित मुद्दे