弄一个简单数据提升和数据截断~
											如题,就是关于数据提升和数据截断问题,先放代码~ 程序代码:
程序代码:
#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编辑过]



 
											







 
	    

 
	
 
											
