广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言简明讲解类型转换的使用与作用
  • 210
分享到

C语言简明讲解类型转换的使用与作用

2024-04-02 19:04:59 210人浏览 八月长安
摘要

目录一、类型之间的转换二、强制类型转换三、隐式类型转换四、表达式中的隐式类型转换五、小结一、类型之间的转换 C语言中的数据类型可以进行转换 强制类型转换隐式类型转换 二、强制类型转

一、类型之间的转换

C语言中的数据类型可以进行转换

  • 强制类型转换
  • 隐式类型转换

二、强制类型转换

强制类型转换的语法

  • (Type)var_name;
  • (Type)value;

强制类型转换的结果

  • 目标类型能够容纳目标值:结果不变
  • 目标类型不能容纳目标值:结果将产生截断

注意:不是所有的强制类型转换都能成功,当不能进行强制类型转换时,编译器将产生错误信息(比如将自定义数据类型转换成基本数据类型)。

下面看一段强制类型转换的代码:

#include <stdio.h>
 
struct TS
{
    int i;
    int j;
};
 
struct TS ts;
 
int main()
{
    short s = 0x1122;
    
    char c = (char)s;    // 0x22
    
    int i = (int)s;      // 0x00001122
    
    int j = (int)3.1415; // 3
    
    unsigned int p = (unsigned int)&ts;
    
    //long l = (long)ts;   // error
    
    //ts = (struct TS)l;   // error
    
    printf("s = %x\n", s);
    printf("c = %x\n", c);
    printf("i = %x\n", i);
    printf("j = %x\n", j);
    printf("p = %x\n", p);
    printf("&ts = %p\n", &ts);
    
    return 0;
}

下面为输出结果:

注意将自定义数据类型转换成基本数据类型会报错。

三、隐式类型转换

隐式类型转换是编译器主动进行的类型转换

注意:

低类型到高类型的隐式类型转换是安全的,不会产生截断

高类型到低类型的隐式类型转换是不安全的,导致不正确的结果

四、表达式中的隐式类型转换

隐式类型转换的发生点

  • 算术运算式中,低类型转换为高类型
  • 赋值表达式中,表达式的值转换为左边变量的类型
  • 函数调用时,实参转换为形参的类型
  • 函数返回值,return表达式转换为返回值类型

安全的隐式类型转换:

下面看一段隐式类型转换的代码:

#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) = %d\n", sizeof(c + s));
    return 0;
}

下面为输出结果:

c 为 char 类型,s 为 short 类型,再进行四则运算前,各个比 int 窄的加数自动提升为 int,结果也为 int 类型,故 size 为4

五、小结

强制类型转换由程序员负责完成

  • 转换可能产生截断
  • 转换不区分类型的高低
  • 转换不成功时,编译器给出错误信息

隐式类型转换由编译器自动完成

  • 低类型向高类型的转换是安全的
  • 高类型向低类型的转换是不安全的

标准C编译器的类型检查是比较宽松的,因此隐式类型转换可能带来意外的错误。

到此这篇关于C语言简明讲解类型转换的使用与作用的文章就介绍到这了,更多相关C语言 类型转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言简明讲解类型转换的使用与作用

本文链接: https://www.lsjlt.com/news/146648.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言简明讲解类型转换的使用与作用
    目录一、类型之间的转换二、强制类型转换三、隐式类型转换四、表达式中的隐式类型转换五、小结一、类型之间的转换 C语言中的数据类型可以进行转换 强制类型转换隐式类型转换 二、强制类型转...
    99+
    2022-11-13
  • C++简明讲解类型转换的使用与作用
    目录一、C语言中的强制类型转换二、C语言强制类型转换存在的问题三、C++ 中的类型转换四、小结一、C语言中的强制类型转换 转换的语法如下: (Type) (Expression) T...
    99+
    2022-11-13
  • C语言简明讲解预编译的使用
    目录小复习1、内置符号2、自定义符号3、自定义宏4、条件编译小复习 预处理,预编译是编译的第一步。 会有三件基本的事情发生: 引入#include去除注释修改#define 1、内置...
    99+
    2022-11-13
  • C语言简明讲解操作符++和--的使用方法
    目录一、++与--操作符的本质二、++与-- 操作符使用分析三、小结一、++与--操作符的本质 ++ 和 -- 操作符对应两条汇编指令 前置 变量自增(减)1取变量值 后置 取变量值...
    99+
    2022-11-13
  • C语言简明讲解单引号与双引号的使用
    目录一、单引号和双引号二、小贴士三、程序实例分析1四、程序实例分析2五、容易混淆的代码六、小结一、单引号和双引号 C语言中的单引号用来表示字符字面量C语言中的双引号用来表示字符串字面...
    99+
    2022-11-13
  • Golang 语言极简类型转换库cast的使用详解
    目录01 介绍02 转换为字符串类型03 总结01 介绍 在 Golang 语言项目开发中,因为 Golang 语言是强类型,所以经常会使用到类型转换。本文我们介绍类型转换三方库 -...
    99+
    2022-11-12
  • C++实例讲解四种类型转换的使用
    目录C++类型转换C语言风格的转换C++风格的类型转换static_castreinterpret_castconst_castdynamic_cast小结C++类型转换 C语言风格...
    99+
    2022-11-13
  • C语言简明讲解快速排序的应用
    目录快速排序1.1快速排序引入1.2快速排序的基本思想1.3快速排序的排序流程1.4实例说明1.5代码实现1.6性能分析快速排序 快速排序,说白了就是给基准数据找其正确索引位置的过程...
    99+
    2022-11-13
  • C语言简明讲解归并排序的应用
    目录一.归并排序1.1归并排序引入1.2归并排序的概念1.3归并排序的原理1.4实例说明1.5具体步骤说明1.6代码实现1.7性能分析一.归并排序 1.1归并排序引入 对于堆排序来说...
    99+
    2022-11-13
  • 如何使用C语言数据类型转换
    这篇文章主要介绍“如何使用C语言数据类型转换”,在日常操作中,相信很多人在如何使用C语言数据类型转换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用C语言数据类型转换”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-15
  • C语言类型转换的作用是什么及怎么使用
    这篇“C语言类型转换的作用是什么及怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言类型转换的作用是什么及怎么使用...
    99+
    2023-06-30
  • 怎么使用Rust语言的类型转换
    本篇内容介绍了“怎么使用Rust语言的类型转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是类型转换类型转换,是调用函数时,根据函数要...
    99+
    2023-06-16
  • C++超详细讲解强制类型转换的用法
    目录static_castdynamic_castconst_castreinterpret_caststatic_cast static_cast<type-id>(e...
    99+
    2022-11-13
  • c语言中enum类型的用法案例讲解
    11.10 枚举类型 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它...
    99+
    2022-11-12
  • Golang语言极简类型转换库cast的使用案例分析
    这篇文章主要介绍“Golang语言极简类型转换库cast的使用案例分析”,在日常操作中,相信很多人在Golang语言极简类型转换库cast的使用案例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golan...
    99+
    2023-06-25
  • C语言简明讲解三目运算符和逗号表达式的使用
    目录一、三目运算符二、逗号表达式三、小结一、三目运算符 三目运算符( a b : c)可以作为逻辑运算的载体 规则:当 a 的值为真时,返回 b 的值;否则返回 c 的值 下面看一...
    99+
    2022-11-13
  • C语言 操作符分类解析与使用
    目录操作符的分类算术操作符移位操作符位操作符逻辑操作符逗号表达式表达式求值隐式类型转换算术转换操作符的属性xwg今天就带各位大佬来了解一波C语言的操作符。 操作符的分类 常见的操作符...
    99+
    2022-11-12
  • C语言举例讲解转义字符的使用
    目录前言啥是转义字符转义字符汇总表详解常见的转义字符总结前言 与大家一起理理转义字符。 啥是转义字符 简单理解:就是可以转换字符意思的字符。 转义字符汇总表 详解常见的转义字符 1...
    99+
    2022-11-13
  • C语言形参与实参使用的差别讲解
    目录前言形参(形式参数)实参(实际参数)形参和实参的区别和联系前言 如果把函数比喻成一台机器,那么参数就是原材料,返回值就是最终产品;从一定程度上讲,函数的作用就是根据不同的参数产生...
    99+
    2023-02-11
    C语言形参与实参 C语言形参 C语言实参
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作