| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1134 人关注过本帖
标题:弄一个简单数据提升和数据截断~
取消只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
 问题点数:0 回复次数:0 
弄一个简单数据提升和数据截断~
如题,就是关于数据提升和数据截断问题,先放代码~

程序代码:
#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


数据提升和数据截断的原理已经在源码里面简单演示,具体就不用多说了~

PS:补充一下,第一个test应该是数据截断,第二个才是数据提升(关键就是程序test与题目逻辑反过来了,特意说明一下)

其实这个可以看出编译器对数据类型的处理,我当然可以理解,就是发来看看可以从个代码看出多少东西了~


[此贴子已经被作者于2018-5-30 13:49编辑过]

搜索更多相关主题的帖子: 数据 截断 void int printf 
2018-05-30 13:42
快速回复:弄一个简单数据提升和数据截断~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030069 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved