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