首页 > 其他分享 >C语言--类型转换

C语言--类型转换

时间:2024-08-26 12:26:52浏览次数:13  
标签:类型转换 -- C语言 char int printf 类型 include

数据的类型不同,在进行混合运算时会涉及到类型转换问题,转换的方法有哪些?

一、自动转换:

遵循一定的规则,由编译系统自动完成.

(一)自动转换的原则:

1、占用内存字节数少(取值范围小)的类型,向占用内存字节数多(取值范围大)的类型转换,目的是为了保证精度不降低.
2、转换方向:

3、当表达式中出现了char 、short int 、int 类型中的一种或者多种,参加运算的成员全部变成int 类型,结果是int 类型

#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%d\n",7/2);//输出3
return 0;
}

 4、当表达式中出现带小数点的实数,参加运算的成员全变成double 类型,结果
是double 型。

#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%lf\n",5.0/2);//输出2.5
return 0;
}

5、当表达式中包含有符号数,也有无符号数,参加运算的成员变成无符号数参加运算,结果是无符号数.(表达式中无实数)

#include <stdio.h>
int main(int argc, char *argv[])
{
int a=-5;
unsigned int b=3;
if(a+b>0)
{
printf("a+b>0\n");
}
else
{
printf("a+b<=0\n");
}
printf("%d\n",(a+b));//输出8
return 0;
}

6、在赋值语句中等号右边的类型自动转换为等号左边的类型

#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
float b=5.2f;
a=b;
printf("a=%d\n",a);//输出5
return 0;
}

7、 自动类型转换只是在运算的过程中进行临时性的转换,并不会影响自动类型转换的变量的
值和类型

#include <stdio.h>
int main(int argc, char *argv[])
{
int a;
float b=5.2f;
a=b;
printf("a=%d\n",a);
printf("b=%f\n",b);//b 的类型依然是float 类型的,它的值依然是5.8
return 0;
}

 二、强制转换

通过类型转换运算来实现
格式:(类型说明符) (表达式)

类型说明符必须加括号

功能:把表达式的运算结果强制转换成类型说明符所表示的类型
例如:
(int)a; // 把a 的值转换为整型
(char)x; // 把x 的结果值转换为字符型

#include <stdio.h>
int main(int argc, char *argv[])
{

int i=1;
float x=2;
x=3.2f;
i = x;
i = (int)x;
printf("x=%f,i=%d\n",x,i);//x=3.2,i=3
return 0;
}


 

标签:类型转换,--,C语言,char,int,printf,类型,include
From: https://blog.csdn.net/qq_57464528/article/details/141527419

相关文章

  • 个人博客导航如何创建更有个性化?
    个人博客导航如何创建更有个性化?创建个性化博客导航是一个既实用又能体现个人风格的过程。以下是一些步骤和建议,帮助你完成这一过程:一、确定导航需求和内容明确目的:首先,你需要明确博客导航的主要目的是什么,比如是为了方便读者查找特定内容、展示你的博客结构,还是为......
  • Steam遭网络攻击 奇安信:很难不让人联想是针对《黑神话:悟空》
    8月24日晚,众多网友反映Steam无法登录,进不去游戏。随后,Steam中国区代理——完美世界竞技平台表示,此次Steam崩溃是由于受到大规模DDoS攻击导致。日前,奇安信XLab实验室发文披露并还原了本次攻击事件的幕后细节。据介绍,本次有近60个僵尸网络主控发起了此次DDoS攻击,攻击指令一......
  • Elasticsearch常用的IK分析器原理
    IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Luce......
  • MySQL的 索引名 ,不同的表 可以 同一个索引名吗
    在MySQL中,不同的表可以使用相同的索引名。MySQL的索引名是在表级别定义的,这意味着索引名的作用域限定于其所属的表。因此,即使两个或多个表拥有相同名称的索引,也不会引起冲突,因为MySQL会根据表名和索引名的组合来唯一标识索引。例如,如果你有两个表users和products,并且你想在这两个......
  • mybatis 查询原理
    mybatis所有操作都会通过sqlSession来完成publicinterfaceSqlSessionextendsCloseable{<T>TselectOne(Stringvar1);<T>TselectOne(Stringvar1,Objectvar2);<E>List<E>selectList(Stringvar1);<E>List<E>......
  • Django缓存设置
    在Django中设置缓存可以显著提高网站的性能,特别是在处理大量请求或数据库查询时。Django支持多种缓存后端,包括内存缓存、文件缓存、数据库缓存和更高级的选项如Memcached和Redis。以下是如何在Django项目中设置缓存的基本步骤:1.选择缓存后端首先,你需要决定使用哪种缓存后端......
  • Ubuntu glfw轮询获取按键事件
    这种方法的使用方式如下:while(!glfwWindowShouldClose(window)){processInputs(window);...}processInputs中包含的要素和上面介绍的回调函数差不多,只是用到了另一个GLFW的函数glfwGetKey。最终效果上,这个函数返回任意时间某个键的状态,就是这......
  • Python系列(9)- Python 异常处理机制
    1.错误和异常   编程开发时一般会遇到2种类型的错误,分别为语法错误和运行时错误。   语法错误(SyntaxError):Python解释器在解析代码时遇到的错误,比如拼写错误、不符合语法规则等。Python解释器会提示错误的类型和出错的位置,便于开发者及时纠正错误,在错误没有得......
  • java计算机毕业设计协同过滤就业系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今信息爆炸的时代,求职者与岗位之间的匹配效率成为影响就业市场活力的关键因素。传统的招聘方式往往依赖于简历筛选、面试等人工流程,不仅耗时费力......
  • ISBN码
    题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括 9 位数字、11位识别码和 3位分隔符,其规定格式如"x−xxx−xxxxx−x",其中符号"−"是分隔符(键盘上的减号),最后一位是识别码,例如"0−670−82162−4"就是一个标准的ISBN码。ISBN码的首位数字表示书籍的......