类型转换

原创 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;
}

运行结果:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Structs2类型转换简单demo

  • 2016-10-30 14:24
  • 5.45MB
  • 下载

数据类型转换

  • 2017-07-10 18:22
  • 224KB
  • 下载

指针类型转换

链接:http://www.360doc.com/content/10/1214/20/1317564_78154410.shtml   1、强制类型转换 看一下这个c代码: int a = ...

struts类型转换与验证

  • 2014-04-17 15:03
  • 1.64MB
  • 下载

走进c#(类型转换的一个类Object对象转int String double byte[] Stream)

转自:http://www.cnblogs.com/dengw009/archive/2011/07/22/2114258.html using System; using System.Col...
  • dqvega
  • dqvega
  • 2012-04-25 15:34
  • 8551

C变量类型转换

  • 2013-11-26 09:03
  • 217KB
  • 下载

Java中x=x+y与x+=y的区别,体现强制类型转换

int x+=y其实是x=(int)(x+y) 直接见下面的代码示例: public class testCasting { public static void main(String...

类型转换集锦

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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