类型转换

原创 2015年11月20日 17:45:22

类型转换

——强制类型转换

转换结果

——目标类型能够容纳目标值:结果不变
——目标类型不能容纳目标值:结果产生截断
#include <stdio.h>
struct TSG
{
    int i;
    int j;
};
struct TSG tsg;
int main()
{
    short s = 0x1122;
    char c = (char)s;    
    int i = (int)s;  
    int j = (int)3.1415;  
    unsigned long p = (unsigned long)&tsg;
//    long l = (long)tsg;   // error
//    tsg = (struct TSG)l;   // error
    printf("s = %x\n", s);
    printf("c = %x\n", c);
    printf("i = %x\n", i);
    printf("j = %x\n", j);  
    printf("&tsg = %p\n", &tsg);
    return 0;
}
运行结果:


——隐式类型转换

——编译器主动进行类型转换
注意:
低类型到高类型的隐式类型转换是安全的
高类型到低类型的隐式类型转换是不安全的,导致不正确结果

——隐式类型转换的发生点
算数运算中,低类型转换为高类型
赋值表达式中,表达式左边的值转换为左边变量的类型
函数调用时,实参转换为行参的类型
函数返回值,return表达式转换为返回值类型

安全的隐式类型转换:
char -> short -> int -> unsigned int -> long -> unsgined long -> float -> double

#include <stdio.h>
int main()
{
    char c = 'a';    
    int i = c;    // safe    
    unsigned int j = 0x11223344;    
    short s = j;  // unsafe    
    printf("c = %c\n", c);
    printf("i = %d\n", i);
    printf("j = %x\n", j);
    printf("s = %x\n", s);
    printf("sizeof(c + s) = %ld\n", sizeof(c + s));
    return 0;
}

运行结果:


SuperMap Objects.NET数据类型转换

  • 2017年12月15日 15:20
  • 9.69MB
  • 下载

数据库类型转换工具

  • 2016年07月14日 16:03
  • 2.06MB
  • 下载

黑马程序员-java中的类型转换

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 按照类型划分分为:基本数据类型的转换以及应用数据类型的转换。 一,基本数据类型的转换 ...

GMT时间与Data2-T类型转换

  • 2016年04月21日 16:36
  • 43KB
  • 下载

图像类型转换工具

  • 2015年07月21日 09:04
  • 110KB
  • 下载

SQL Server 与ORACLE数据类型转换对应关系

oracle 与 sql server 数据类型对应关系 sql serer 向oracle 转换对应关系

C++类型转换

  • 2017年09月08日 22:41
  • 2KB
  • 下载

C语言数据类型转换的探讨

  • 2015年05月06日 13:51
  • 290KB
  • 下载

c++ unsigned和int类型转换及运算

一、规则总结 1. 在c++中,如果赋值给无符号类型一个超过它表示范围的值(如负数),结果是初始值对无符号类型表示数值最大值取模后的余数。 2. 在c++中,如果表达式中同时有无符号类型和有符号类型,...

数据类型转换

  • 2013年05月03日 19:30
  • 22KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类型转换
举报原因:
原因补充:

(最多只允许输入30个字)