弄一个简单数据提升和数据截断~
如题,就是关于数据提升和数据截断问题,先放代码~
程序代码:
#include<stdio.h>
void test1( void );
void test2( void );
int main( void )
{
puts("test1:");
test1();
puts("");
puts("test2:");
test2();
return 0;
}
void test1( void )
{
int a=0xff000000;
int k=( short )a;
printf("a=%#x\n",a);
printf("k=%#x\n",k);
}
void test2( void )
{
short a=0xff00;
int k=a;
printf("a=%#hx\n",a);
printf("k=%#x\n",k);
}
运行果为:
test1:
a=0xff000000
k=0
test2:
a=0xff00
k=0xffffff00
a=0xff000000
k=0
test2:
a=0xff00
k=0xffffff00
数据提升和数据截断的原理已经在源码里面简单演示,具体就不用多说了~
PS:补充一下,第一个test应该是数据截断,第二个才是数据提升(关键就是程序test与题目逻辑反过来了,特意说明一下)
其实这个可以看出编译器对数据类型的处理,我当然可以理解,就是发来看看可以从个代码看出多少东西了
~[此贴子已经被作者于2018-5-30 13:49编辑过]



