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

 我来答
接静白军涉
2020-01-22 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:30%
帮助的人:652万
展开全部
编译器不同,结果会有所不同。
如果是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-20 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:720万
展开全部
编译器不同,结果会不一样。
如果是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其实是一个八进制常量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
章佳竹前阵
2020-02-12 · TA获得超过3.1万个赞
知道小有建树答主
回答量:1.1万
采纳率:33%
帮助的人:604万
展开全部
编译器不同,结果会不一样
如果是VC、VS编译器,结果为1,表示一个字符的字节数
如果楼主的结果是2
那只有一种解释
‘a’是整型常量,是unsigned
int,且楼主的编译器中int的宽度为16位2字节,所以是2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蒋夜春夷岳
2019-08-23 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:32%
帮助的人:974万
展开全部
c语言里就是把字符常量当做了整型处理的.
在c中'a'这类的是代表着'a'这类的acsii的值..
而在c++中'a'这类就代表一个字符常量
sizeof
'a'
所以在vc++里,为
4
不为2
的原因.
你注意看我第一句话..在c中这个字符常量是被当做一个整形来处理的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式