首先,在C中,数据之间的运算必须是同类型的才能进行运算。如果类型不一致,就必须先转换成相同的类型----------由低级别 → 高级别转换。
本题中,数据类型级别由低到高分别为:char→int→unsigned→long。转换时由低级别向高级别转换。
比如,有两个数的数据类型分别为:char型跟long型。 就要先char转换为long型(因为long级别比char高),再进行运算。
但是不能理解为:先将char转换成int,再转换成unsigned,再转换成long。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。C语言强大的移植性在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha,SPARC和ARM等机器上运行。而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
级别转换。
本题中,数据类型级别由低到高分别为:char→int→unsigned→long。转换时由低级别向高级别转换。
比如,有两个数的数据类型分别为:char型跟long型。 就要先char转换为long型(因为long级别比char高),再进行运算。 但是不能理解为:先将char转换成int,再转换成unsigned,再转换成long。
希望对您有所帮助!
谢谢。请问x2b2这个不是合法整数,那里错了?为什么?谢谢了
十六进制整常数由 前缀(0X或0x) 和 数码(0~9、A~F或a~f) 组成。
所以x2b2是非法的。
错在前缀 x ,应该改为 0X或0x。 ---------------- 0是数字的0,不是英文字母O.