C语言数据类型转换

article/2025/10/5 19:37:28

文章目录

  • 前言
  • 一、类型自动转换
  • 二、赋值转换
  • 三、强制类型转换


前言

C语言中,整型、单精度型、双精度型和字符型数据可以进行混合运算。字符型数据可以得与整型通用。例如:

100+′A′+8. . 65-2456. 75×′a′

是一个合法的运算表达式。在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。C语言数据类型转换可以归纳成三种转换方式:自动转换,赋值转换和强制转换。

一、类型自动转换

在进行运算时,不同类型的数据要转换成同一类型。自动转换的规则如图在这里插入图片描述

转换方法为:

  1. float型数据自动转换成double型;
  2. char与short型数据自动转换成int型;
  3. int型与double型数据运算,直接将int型转换成double型
  4. int型与unsigned型数据、直接将int型转换成unsigned型;
  5. int型与long型数据,直接将int型转换成long型。

如此等等,总之是由低级向高级型转换。对于图中列出的自动类型转换,不要错误地理解为先将char型或short型转换成int型,再转换成unsigned型,再转换成long型,直至double型。例如,有如下定义:

char ch='a’
int i=13:
float x=3.65;
double y=7.528e-6;

若表达式为

i+ch+x*y

则表达式的类型转换是这样进行的:

先将ch转换成int型,计算i+ch,由于ch=‘a’,而‘a’的ASCH码值为97,故计算结果为110,类型为int型。再将x转换成double型,计算x*y,结果为double类型。最后将i+ch的值110转换成double型,表达式的值最后为double类型。

二、赋值转换

如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。转换的基本原则如下。

  1. 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中
  2. 将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。如x为整型变量,执行“x=4.25”时,取值为x=4。
  3. 同类型的短数据赋值给长变量,自动转换是正确的,例如,char和short型数据给int型变量赋值。
  4. 同类型的长数据给短变量赋值可能出错。例如,当unsigned int型的值超过了int变量的取值范围,赋值会出错
    例如:unsigned int 变量给int变量赋值出错
#include <stdio.h>
#include<windows.h>
void main()
{unsigned int l= 4294967295 ;/*将最大的无符号整型数赋给变量1*/int a;a=l;/*将l的值赋给变量a*/printf("%12d\n",a);/*输出变量a的值*/system("pause");
}

输出结果为:

-1

“l= 4294967295 ”赋值给int型变量a,a的值却是-1。这是因为a是有符号数,最高位是符号位,为1表示该数是负数。
无符号整型数4294967295的32位二进制位都是1,而有符号int型-1用32位全1的二进制位表示。

#include<stdio.h>
#include<windows.h>
#include<math.h>
void main(){char ch='A';//定义字符型变量,并赋初值‘A’int a,b=3,c;//定义整型变量,并给变量b赋初值3float x1,x2=2.5;//定义单精度浮点型变量a=ch;//将字符型变量ch的值'A'赋给整型变量ax1=a;c=x2;//x2的值2.5赋给整型变量c printf("%4c,%4d,%6.2f,%4d\n", ch,a,x1,c);//输出变量ch、a、x1和c的值getchar();
}

输出结果为:

A 65 65.00 2

第一个输出数据是字符变量ch的值字符’A’;第二个输出数据是整型变量a的值65,字符’A’的ASCII码转换成32位的整型数据;第三个输出数据是实型变量xl的值65.00,由int型变量a的值65自动转换成float类型;第四个数据是整型变量c的值,由实型变量x2的值2.5自动转换成整型数2。

三、强制类型转换

可以利用强制类型转换运算符将一个表达式转换成所需类型。如:

(double)x/*将x转换成double型*/ 
(int)(a+b)/*强制将a+b的值转换成整型*/
(float)(10%3)/*将10%3的值转换成float型*/ 

强制类型转换的一般形式为:
(类型名)(表达式)
例如:

int a=7,b=2;
float y1,y2;
float y1=a/b;/*y1的值a/b为3.0*/
y2=(float)a/b;/*y2的值为3.5,float将a进行强制转换为实型,b也随之自动转换为实型*/

(int)(x+y)和(int)x+y强制类型转换的对象是不同的。(int)(x+y)是对x+y进行强制类型转换;而(int)x+y则只对x进行强制类型转换。


http://chatgpt.dhexx.cn/article/75ZX0xL4.shtml

相关文章

数据类型的转换

数据类型转换分为两种&#xff1a;自动类型转换和强制类型转换。 一、自动类型转换 ①转换前的数据类型与转换后的类型兼容。 ②转换后的数据类型的表示范围比转换前的类型大。 条件②说明不同类型的数据进行运算时&#xff0c;需先转换为同一类型&#xff0c;然后进行运算。…

数据类型转换

数据类型转换 首先&#xff0c;数据类型一共有6种&#xff0c;分别是字符串、布尔值、数值、空值、未定义和对象。 其中基本数据类型&#xff1a; 1、number数值类型&#xff1a;在JS中所有的数值都是Number类型&#xff0c;包括了整数、浮点数(小数) - 拓展部分&#xff1a…

Java全栈开发

2022年9月6日更新 更多见 个人掘金收藏 写了一个小工具 &#xff0c;可以点击查看和搜索&#xff0c;见这篇博客 JavaFx入门5 - 一个小工具的实现 网上的一些Java全栈开发技术汇总 代码更新 &#xff1a;https://git.code.tencent.com/Java66/openJava.git 目录 比较好的…

java appkey_Java全栈工程师 风袖 appkey

Java全栈工程师 全局性思维 现代项目的开发&#xff0c;需要掌握多种技术。互联网项目&#xff0c;需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等&#xff0c;比较前卫的项目&#xff0c;还会用到Single Pag…

Java全栈进阶

https://shq5785.blog.csdn.net/

java全栈前景_Java全栈开发哪个发展前景好

原标题&#xff1a;Java全栈开发哪个发展前景好 全栈和java哪个能更好迎合市场需求&#xff0c;有同学咨询学习哪个在以后前景和工作薪水上能更吃香&#xff0c;首先我们先来了解下Java开发和全栈开发的区别。 全栈开发工程师是指掌握多种技能&#xff0c;能够独立开发应用程序…

Java全栈工程师学习路线(思维导图)送你进大厂

当今软件行业中&#xff0c;Java是最流行的编程语言之一。许多企业都需要Java开发人员来构建和维护应用程序。因此&#xff0c;作为一名Java开发人员&#xff0c;学习Java编程语言和相关技术是至关重要的。下面是一些Java学习路线的建议&#xff1a; 目录 Java 基础Java高级We…

零基础Java全栈教程--全文目录

文章目录 1. 教程结构2. 教程目录2.1 HTML篇2.2 CSS篇2.3 JS篇2.4 Java 语言基础篇2.5 Java Web基础篇2.6 JSJava项目实战篇2.7 jQuery篇2.8 BootStrap篇2.9 Java SSM篇2.10 BootStrapSSM项目实战篇2.11 ESWebpack篇2.12 Vue篇2.13 Element篇2.14 SpringBoot篇2.15 VueSpringBo…

Java全栈学习路线

在学习Java苦于没有自己的完整学习步骤&#xff0c;下面是一个大概的学习路线&#xff1a; 一、Java基础 二、JavaWeb 三、SSM框架 四、Linux运维 五、微服务和分布式 六、大数据开发 七、持续学习 总结&#xff1a; 目前自己正处于一个找工作的阶段&#xff0c;也希望这些学…

java全栈开发主要工作内容,java全栈工程师

KEYRESPONSIBILITIES: •Code,testandreleasechangesasperstandardCitiguidelines •Provideanalysisandwritefunctional&technicalspecifications •Communicateandworkcloselywithpeerdevelopersofglobalteam •HandleBAUactivities,includingidentifyingandresolvingbug…

java全栈知识点[面试篇](一)

jjava全栈知识点[面试篇]&#xff08;一&#xff09; 阻塞与等待的状态转变⭐Synchronized本质上是通过什么保证线程安全的?volatile、synchronized和Lock如何保证可见性⭐Synchronized使得同时只有一个线程可以执行&#xff0c;性能比较差&#xff0c;有什么提升的方法?⭐sy…

java面试必问,java全栈面试题

一、前言 有句话&#xff1a;正因为你优秀&#xff0c;所以难以卓越&#xff01; 刚开始听这句话还在上学&#xff0c;既不卓越、也不优秀&#xff0c;甚至可能还有点笨&#xff01;但突然从某次爬到班级的前几名后&#xff0c;开始喜欢上了这种感觉&#xff0c;原来前面的风…

从搬砖工到架构师,Java全栈学习路线总结

&#x1f307;文章目录 前言一、前置知识二、 Web前端基础示例&#xff1a;1.文本域2.密码字段 三、后端基础一. Java基础二. 数据库技术三. Web开发技术四. 框架技术五. 服务器部署 四、其他技术五、全栈开发六、综合实践七、学习教程一、前端开发二、后端开发三、数据库开发四…

java全栈(java全栈开发工程师)

如何记录Java栈区的指针&#xff1f; optop,frame和vars用于记录指向Java栈区的指针 Java全栈工程师在未来的发展如何&#xff1f; 全栈工程师是指网站开发所有东西都要负责(即前端和后端都要负责)&#xff0c;前端是指网站的网页设计&#xff0c;后端是指网站的数据动态变化&a…

1. JAVA全栈知识体系--- Java基础

1. JAVA全栈知识体系— Java基础 文章目录 1. JAVA全栈知识体系--- Java基础1.1 语法基础面向对象特性&#xff1f;a a b 与 a b 的区别3*0.1 0.3 将会返回什么? true 还是 false?能在 Switch 中使用 String 吗?对equals()和hashCode()的理解&#xff1f;final、finaliz…

Java 全栈知识体系

40000 字长文总结。 全栈知识体系总览 Java入门与进阶 面向对象与Java基础 Java 基础 - 面向对象 Java 基础 - 知识点 Java 基础 - 图谱 & Q/A 基础知识点复习完了以后&#xff0c;我们需要深入的理解Java中的一些基础机制&#xff1a; Java 基础 - 泛型机制详解 Java…

Java全栈体系路线(总结不易,持续更新中)

文章目录 Java全栈工程师<font colororange>Java基础基础语法面向对象工具类集合框架序列化反射机制注解文件处理设计模式视频教程文档教程练习题面试题GUI模块多线程模块Socket模块JDBC模块数据库操作起步JDBC执行sql数据库进阶操作JDBC进阶视频教程文档教程 JVM教程基础…

android soundpool 封装,Android 音效 SoundPool 封装类 停止音效播放

项目中&#xff0c;需要添加点击或者状态回调的音效。 Android 有专门用于实现音效播放的类&#xff0c;就是 SoundPool 。 1 工具类封装 共四种音效&#xff0c;更多可在 init 中 自行添加。 /** * * author : jake * time : 2019/01/10 * function : 音效管理类 * version: …

SoundPool

SoundPool 一、SoundPool简介 MediaPlayer虽然也能播放音频&#xff0c;但是它有资源占用量较高、延迟时间较长、不支持多个音频同时播放等缺点。这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想&#xff0c;例如在对时间精准度要求相对较高的场景。而SoundPool一般…

Android学习笔记 50. Android 多媒体技术——SoundPool播放音效

Android学习笔记 Android 多媒体技术 文章目录 Android学习笔记Android 多媒体技术50. Android 多媒体技术——SoundPool播放音效50.1 SoundPool50.2 使用SoundPool 50. Android 多媒体技术——SoundPool播放音效 50.1 SoundPool MediaPlayer虽然也能播放音频&#xff0c;但…