整型数据和字符型数据的类型不同,它们之间能不能进行运算?

如题所述

整型、单精度型、双精度型数据可以混合运算。字符型数 据可以与整型通用,因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。例如:
10+'a'+1.5-8765.1234*'b'
是合法的。在进行运算时,不同类型的数据要先转换成同一类型, 然后进行运算。转换的规则按图所示

double ← float

long

unsigned

int ← char, short

图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数, short型转为int型,float型数据在运算时一律转换成双精度型,以提高运算精度(即使是两个float型数 据在加化成double型,然后再相加)。
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与doub1e型 数据进行运算,先将int型的数据转换成图double型,然后在两个同类型(double型)数据进行运算, 结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先 转成unsigned型,再转成1ong型,再转成double型。如果一个Int型数据与一个double型数据运算, 是直接将int型转成double型。同理,一个int型与一个Long型数据运算,先将int型转换成1ong型。
换言之,如果有一个数据是float型或double型,则另一数据要先转 为double型,结果为double型。如果二个数据中最高级别为1ong型,则另一数据先转为1ong型,结果 为1ong型。其它依此类推。假设已指定i为整型变量,f为float变量,d为double型变量,e为1ong型,有 下面式子:
10+'a'+i*f-d/e
运算次序为:①进行10+'a'的运算,先将'a'转换 成整数97,运算结果为107。②进行i*f的运算。先将i与f都转成double型,运算结果为dOuble型。 ③整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00), 结果为double型。④将变量e化成double型,d/e结果为double型。⑤将10十'a'+i*f的结果 与"d/e结果为double型。 上述的类型转换是由系统自动进行的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-15
在C语言中可以,字符和整型是通用的
如char c=65;和char c='A'都可以,实际上'A'赋值给c,是把它的asc||(也就是65)码赋给变量c的。 你就把字符型当做整型的另一种表示形式就行了本回答被网友采纳
相似回答