```
#include<stdio.h>
int main()
{ char c = 0;
printf("%u\n", sizeof(c));
printf("%u\n", sizeof(-c));
printf("%u\n", sizeof(+c));
return 0;
}
```的sizeof(c)和sizeof(+c)有什么区别?为什么sizeof(+c)和sizeof(c)的字节个数不同
sizeof(c) =》是sizeof运算符计算c的char类型所占内存空间,由于char是一个字节,所以结果是1
sizeof(-c))=》是sizeof对-c表达式的结果进行求内存空间大小,-c表达式实际上是相当于0-c,0是整型,整型和字符型计算最后会按照高精度来求结果,因此最后得到的结果也是整型,整型占4字节,所以结果是4
sizeof(+c)); 同理,+c相当于0+c,最后的结果是整型,因此结果是4
sizeof操作符可以用来计算某个类型或变量所占的内存空间大小。将一个字符类型变量与一个整数类型常量相加时,编译器会自动将字符类型转换为整数类型。char占1个字节,int占4个字节。
int main()
{
int arr[5] = {0};
printf("%d\n", sizeof(arr));
int a = 10;
int n = sizeof(a);//计算的是a所占内存的大小,单位是字节
int n = sizeof(int);
sizeof是一个操作符
//计算的是变量所占内存空间的大小,单位是字节
//计算类型所创建的变量占据空间的大小,单位是字节
printf("n=%d\n", n);
return 0;
}
在C语言中,sizeof运算符是用来计算变量或类型占用内存空间的大小(字节数)。而在这个问题中,sizeof(+c)和sizeof(c)的结果不同是因为加号(+)实际上没有任何作用,编译器会忽略它,所以sizeof(+c)和sizeof(c)是等效的。
具体步骤如下: 1. 定义一个变量c,例如:int c = 1; 2. 使用sizeof(c)计算变量c所占的内存空间大小,比如4个字节。 3. 使用sizeof(+c)计算表达式(+c)的内存空间大小,此处的+号没有任何作用,所以+1=1,所以sizeof(+c)的结果与sizeof(c)相同,都是4个字节。
因此,sizeof(+c)和sizeof(c)的结果相同,都是变量c所占内存空间的大小,即字节数。
sizeof(c) 和 sizeof(+c) 的区别在于它们的操作数类型不同。sizeof(c) 返回变量 c 的大小,而 sizeof(+c) 返回表达式 +c 的大小。
在这个程序中,变量 c 被声明为 char 类型,其大小为 1 字节。而表达式 +c 是一个一元正号运算符,它将其操作数转换为 int 类型。因此,+c 的类型为 int,其大小通常为 4 字节
所以,sizeof(c) 返回 1,而 sizeof(+c) 返回 4。