2011-06-24 10 views
1

可能性の重複:Cについては
Size of character ('a') in C/C++CでのsizeofおよびC++

#include <stdio.h> 

int main()     
{ 
    printf("%d" , sizeof('a')); 
    return 0; 
} 

#include <iostream> 
using namespace std;  

int main(){ 
    cout << sizeof('a'); 
    return 0; 
} 

は、それはC++、それが1を与えるためのに対し、答えとして4を与えますか? 私の質問は、言語が文字定数を異なって解釈するのはなぜですか?

+1

何か興味深い(おそらくあまり有用でないかもしれませんが)あなたは合法的に 'abcd'(二重ではなく一重引用符)のようなものを参照することができます... charまたはcharの文字列を定義しません。その値は、一緒に張られた各文字のascii値に基づいています。 – mah

+0

おそらく、ansiとunicodeの違いはありますが、それは推測です –

+0

私がよく知っているルールは正反対です( 'sizeof( 'a')'はCでは4、C++では1です)。 –

答えて

4

実際にはsizeof('a') == sizeof(int)(C:4)です。私はを完全に確信していません C++については、私はsizeof('a') == sizeof(char)と信じています。

C FAQで説明します。

はおそらく驚くべきことに、Cの文字 定数はそう sizeof('a')sizeof(int)あなたがものを見つけるために管理している

0

(これはC++ がを異なっ別の領域である が)で、タイプintでありますCとC++の標準が大きく異なる数少ない場所のうち、スペックは彼らがそうでなければならないと言っているので、彼らは異なった答えです。

関連する問題