2 deyangliu deyangliu 于 2013.11.30 14:00 提问

为什么gcc 对类型转换不报错?

比如

int f1(int *x);

int main()
{
signed char a = 0, b = 0;
f1(&a);
}

int f1(int *x)
{
*x = 0xaabb;
}

b 被改写为0xaa, 显然不是符合原来的意图。

2个回答

whizer
whizer   2013.12.02 13:25
已采纳

gcc不知道你的真实意图,你的真实意图需要自己去实现.
gcc怎么知道你的调用不是下面的方式?

int f1(int *x);

int main()
{
signed char a[2], b = 0;
int ab;
f1(a);
f1(&ab);
}

int f1(int *x)
{
*x = 0xaabb;
return 0;
}

bsdcfp
bsdcfp   2013.11.30 16:33

char型变量长度为1byte

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!