sizeof(char)等于1,那sizeof(‘a’)为什么等于2?

sizeof(char)等于1,那sizeof(‘a’)为什么等于2?... sizeof(char)等于1,那sizeof(‘a’)为什么等于2? 展开
 我来答
牛牛爱教育
高粉答主

2019-08-31 · 我是教育小达人,乐于助人; 专注于分享科
牛牛爱教育
采纳数:900 获赞数:105794

向TA提问 私信TA
展开全部

编译器不同,结果会有所不同。

如果是VC、VS编译器,结果为1,表示字符中的字节数。

如果结果是2,那么只有一个解释,‘a’是整型常量,是unsigned int,且楼主的编译器中int的宽度为16位2字节,所以是2。



扩展资料

一、定义不同

sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。

2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。

二、语法不同

1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。

2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

梦色十年
高粉答主

2019-07-19 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:2967
采纳率:100%
帮助的人:95.6万
展开全部

编译器不同,结果会不一样。

如果是VC、VS编译器,结果为1,表示一个字符的字节数

如果结果是2,那只有一种解释,‘a’是整型常量,是unsigned int,且楼主的编译器中int的宽度为16位2字节,所以是2。

扩展资料:

在C语言中,整型常量有三种书写形式:

(1) 十进制整数。十进制整数就是通常整数的写法。例如:11、15、21等。

(2) 八进制整数。八进制整数的书写形式是在通常八进制整数的前面加一个数字0。例如:00、0111、015、021等,它们分别表示十进制整数:0、73、13、17

(3) 十六进制整数。十六进制整数的书写形式是在通常十六进制整数的前面加0x。例如:0x0、0x111、0x15、0x21等,它们分别表示十进制整数0、273、21、33。

注意,整型常量前面没有+或者-,-10其实是一元-运算符和操作数10,同样整型常量的十进制表示并没有0,单独写一个0其实是一个八进制常量。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
marilynbkun
推荐于2017-05-25 · TA获得超过756个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:242万
展开全部
编译器不同,结果会不一样
如果是VC、VS编译器,结果为1,表示一个字符的字节数
如果楼主的结果是2
那只有一种解释
‘a’是整型常量,是unsigned int,且楼主的编译器中int的宽度为16位2字节,所以是2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2012-03-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2838万
展开全部
1 1
Press any key to continue
环境VC6
#include<stdio.h>
void main()
{
printf("%d %d\n",sizeof(char),sizeof('a'));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ydliwei1123
2012-03-09 · TA获得超过326个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:216万
展开全部
a=97,是整形数字,所以是2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式