sizeof(c) 和 size('a') 给出不同的结果。 (c是字符变量)
#include<stdio.h>
int main()
{
char ch;
fflush(stdin);
ch=getchar();
printf("ch= %d a=%d char=%d", sizeof(ch),sizeof('a'),sizeof(char));
}
我输入 ' a'(不带引号)作为输入,我在 gcc 版本 4.5.1 中得到的输出是:
ch= 1 a=4 char=1
我的问题是:
如果sizeof(c)
是 1
,那么 sizeof('a')
怎么会是 4
呢?
Possible Duplicate:
Why are C character literals ints instead of chars?
why sizeof('a') is 4 in C?
#include<stdio.h>
int main()
{
char ch;
fflush(stdin);
ch=getchar();
printf("ch= %d a=%d char=%d", sizeof(ch),sizeof('a'),sizeof(char));
}
I type in 'a' (without quotes) as input , and the output I got in my gcc version 4.5.1 is :
ch= 1 a=4 char=1
My question is :
If sizeof(c)
is 1
, then how can sizeof('a')
be 4
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 C 中,文字字符(例如,
'a'
)是int
,而不是char
。然而,在 C++ 中,文字字符是实际的char
。In C, a literal character (e.g.,
'a'
), is anint
, not achar
. In C++, however, literal characters are actualchar
s.因为在 C 语言中,字符常量(例如 'a')的类型为
int
。有一个关于此主题的 C 常见问题解答:
Because in C character constants, such as 'a' have the type
int
.There's a C FAQ about this suject:
在大多数系统上'a'== 97,即字符'a'的ASCII值。
例如:
如果使用选项 '%c' 打印变量
c
的值,您将在屏幕上看到 'a'。对于您的问题,我们可以将sizeof('a')
推导为sizeof(i)
等于sizeof(97)
;您应该能够在 C 标准文档中找到它。
On most of the systems 'a'== 97, which ASCII value of the character 'a'.
for e.g:
If you print the value of variable
c
with the option '%c' you'll see 'a' on the screen. for your question we can deducesizeof('a')
assizeof(i)
equable tosizeof(97)
;You should be able to find this in C standards document.