sizeof(char)等于1,那sizeof(‘a’)为什么等于2?
展开全部
编译器不同,结果会有所不同。
如果是VC、VS编译器,结果为1,表示字符中的字节数。
如果结果是2,那么只有一个解释,‘a’是整型常量,是unsigned
int,且楼主的编译器中int的宽度为16位2字节,所以是2。
扩展资料
一、定义不同
sizeof是运算符,在头文件中typedef为unsigned
int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。
二、语法不同
1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。
2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
如果是VC、VS编译器,结果为1,表示字符中的字节数。
如果结果是2,那么只有一个解释,‘a’是整型常量,是unsigned
int,且楼主的编译器中int的宽度为16位2字节,所以是2。
扩展资料
一、定义不同
sizeof是运算符,在头文件中typedef为unsigned
int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。
二、语法不同
1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。
2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
展开全部
编译器不同,结果会不一样。
如果是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其实是一个八进制常量。
如果是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其实是一个八进制常量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译器不同,结果会不一样
如果是VC、VS编译器,结果为1,表示一个字符的字节数
如果楼主的结果是2
那只有一种解释
‘a’是整型常量,是unsigned
int,且楼主的编译器中int的宽度为16位2字节,所以是2
如果是VC、VS编译器,结果为1,表示一个字符的字节数
如果楼主的结果是2
那只有一种解释
‘a’是整型常量,是unsigned
int,且楼主的编译器中int的宽度为16位2字节,所以是2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言里就是把字符常量当做了整型处理的.
在c中'a'这类的是代表着'a'这类的acsii的值..
而在c++中'a'这类就代表一个字符常量
sizeof
'a'
所以在vc++里,为
4
不为2
的原因.
你注意看我第一句话..在c中这个字符常量是被当做一个整形来处理的
在c中'a'这类的是代表着'a'这类的acsii的值..
而在c++中'a'这类就代表一个字符常量
sizeof
'a'
所以在vc++里,为
4
不为2
的原因.
你注意看我第一句话..在c中这个字符常量是被当做一个整形来处理的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询