您的位置:首页 > 其它

为什么 sizeof(char + char)= 4?

2016-06-10 14:47 274 查看
      下面的英文解释是stackoverflow上的同行解释 。 

In C language operands of almost all arithmetic operators are subjected to implicit conversions calledusual arithmetic conversions or, in this case,
integer promotions.

Operands of type char are promoted to type int and the actual addition is performed within the domain of int (or unsigned int, depending on the properties of
char on that platform).

So your a + b is actually interpreted as (int) a + (int) b. The result has type int and sizeof(int) is apparently 4 on your platform. That 4 is what you see.And don't use %d to printf the result
of sizeof. The result of sizeof has type size_t, while %drequires an int argument. So, either use the proper format specifier.

printf("%zu\n", sizeof(a+b));or at least cast the argument if you are sure it fits printf("%d\n", (int) sizeof(a+b));
上面这段话的意思用代码解释如下:
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
char a,b;
a = 'a';
b = 1;
cout << "a + b = " << a + b << endl;
cout << "a + b = " << (char)(a + b) << endl;
getchar();
return 0;
}
运行上面的程序得到如下结果:

a + b = 98

a + b = b
字符a和b相加后会自动转换成int类型进行相加即'a'(ACSII为97)+ 1 = 98,如果将相加的结果转换成char类型即将98转换成char类型得到字符'b'。
所以sizeof(char + char)= sizeof(int) = 4;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sizeof