当运算符的几个操作数类型不同时,编译器会通过一些规则来把它们转换为某种相同的类型。
1.自动转换(隐式类型转换)
如果没有进行强制类型转换,默认为自动转换。
当一个运算符的几个操作数类型不同时,自动转换的原则是将“比较窄的”操作数转换为“比较宽的”操作数,并且不丢失信息。
特例:对于赋值运算符,赋值运算符右边的值要转换成左边变量的类型,左边变量的类型即赋值表达式结果的类型。右边的“宽”操作数转换为左边的“窄”操作数时,超出的高位部分直接被丢弃。
1.1将字符类型转换为整型
C语言没有指定char类型的变量是无符号变量(signed)还是带符号变量(unsigned)。在某些机器中,char类型值的最左一位为1,而在另一些机器中char类型值的最左一位为0。字符类型转换为整型时会进行“符号位扩展”。对于有符号数,用符号位填充高位字节。对于无符号数,用0填充高位。
C语言的定义保证打印字符集中的字符总是正值。但是,存储在字符变量中的位模式在某些机器可能是负值,而在另一些机器上可能是正的。为了程序的可移植性,如果要在char类型的变量中存储非字符数据最好显示指定singned或unsigned限定符。
1.2有符号数和无符号数之间的转换
当操作数中既有无符号数又有有符号数时,无符号数将自动转换成有符号数再进行运算。
-1L<1U,这是因为unsigned int类型的1U被提升为singed long类型;而
-1L>1UL,这是因为-1L转换为unsignedlong类型时,最高位为1,是一个比较大的正数。
1.3赋值运算符的类型转换
较长的整数转换为较短的整数或char类型时,超出的高位直接被丢弃。因此,下面的程序片段
int i;
char c;
i = c;
c = i;
i的值不会有变化。(无论是否进行符号位扩展,该结论都成立)
如果上面赋值语句的次序颠倒一下:
c=i;
i=c;
如果i是一个负数(高位为1),经过上面的赋值后高位信息将丢失,i将变成一个整数。
2.强制类型转换
语法规则:(类型名)表达式
强制类型转换的规则和自动转换一样:长转短,可能丢失信息;短转长,符号位填充;
注意:强制类型转换只是生成一个指定类型的值,操作对象本身是没有什么改变的。
2.1函数参数的自动强制转换
在调用函数时,如果传入的参数和函数原型申明参数类型不一样,将进行自动强制类型转换,转换不了就报错。
PS:C语言标准库中(K&C之后的版本),没有一个函数参数是char型的。要用到char型的函数都用int代替了。所以你传入的char都会转换为int型后传入。
相关推荐
这是使用C语言链表进行的进制装换,十进制转换为八进制,通过栈的先进后出的原则,使用链表进行编写,在通过while循环输出。
C语言类型定义的简化语法图 C语言类型定义的简化语法图 C语言类型定义的简化语法图 C语言类型定义的简化语法图
C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! C语言中float类型的实现! ...
C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型汇总C语言基本类型...
在“各种各样的C语言类型题目”中,我们可以深入学习和理解C语言的关键概念,包括数据类型、控制结构、函数、指针等核心主题。 1. 数据类型:C语言提供了基本的数据类型,如整型(int)、字符型(char)、浮点型...
C语言程序设计各章节习题练习:C语言基本数据类型及运算.doc
C语言是一种静态类型语言,它的设计目标是接近底层硬件,提供高效的代码生成。在C语言中,没有内置的String类型,而是使用字符数组(char[])来表示字符串。这种设计源自于C语言的原始性和效率考虑。 在C语言中,类型...
C语言,显卡类型测试,源码 与大家分享下
C语言数据类型是指C语言中可以使用的各种数据类型,包括基本类型、构造类型和指针类型。理解数据类型是学习C语言的基础。 一、基本类型 基本类型是C语言中最基本的数据类型,包括整型、实型、字符型、枚举型和空...
C语言枚举类型详解C语言枚举类型详解
1. 变量与数据类型:C语言中包括整型(int)、浮点型(float/double)、字符型(char)等基本数据类型,以及枚举(enum)、指针(pointer)等高级数据类型。理解它们的存储方式和运算规则是学习C语言的基础。 2. ...
C语言各种类型直线的绘制 C语言各种类型直线的绘制
C语言程序设计有关数据类型、运算符基础知识
c语言小游戏c语言项目源码大全合集(60例): c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个任务管理器 c语言做的播放器...
C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言库函数速查手册C语言...
本文将详细说明C语言的基础知识,包括ASCII码表、C语言转义字符、C语言运算符、C语言关键字和C语言数据类型等。 ASCII 码表 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)...
C语言数据类型,运算符和表达式,熟悉关键字、标识符、常量、变量等术语; 掌握C语言的三种基本数据类型; 掌握几种常见的运算符(算术运算符、赋值运算符,逗号运算符) 掌握几种常见的表达式(算术表达式、赋值...
1. **第02章 数据类型、运算符与表达式.ppt**:这一章主要讲解C语言中的基本数据类型,如整型、浮点型、字符型等,以及各种运算符(算术、关系、逻辑、赋值等)的用法。表达式的计算规则和类型转换也是关键点。 2. ...
C语言作为一种广泛使用的编程语言,其设计风格和数据类型设计对初学者尤其是二本院校的计算机专业学生造成了相当大的学习挑战。在这些挑战中,字符串类型的缺陷尤为明显,直接导致了学习难度的增加和后续语言学习...
本课程主要讲解C语言的基本数据类型和表达式,以及运算符和不同类型数据间的运算转换。 首先,C语言的基本数据类型包括整型(如int)、浮点型(如float和double)、字符型(char)和布尔型(在某些标准库中表示为...