关于c语言里类型转换的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 13:57:59
有如下代码(是简写的)在VC++6.0里面
定义 int x=97,y=65;
(char)x,(char)(x),(char)x+y,(char)(x+y);
之间有什么区别?结果各是什么?
还有
定义char x=A,y=a;
(int)x,(int)(x),(int)x+y,(int)(x+y);他们之间的区别还有结果?
还有在VC++6.0里面怎么把一个整型数据按ASCLL码值转换成相应的字符?
例如,int c=65;怎么把c对应的65转换成A?

1、你的问题只是运算符优先级的问题。
()的优先级高于数学运算符,所以(char)x+y和(char)(x+y)与(int)x+y和(int)(x+y)的区别是一样的:即前者只是转化了x的类型,后者是转换了整个x+y的结果的类型。
而(char)x,(char)(x)没有区别,int也一样

2、你上述转换都是没有意义的!
在C语言里,数学计算中是类型自动转化为一致的,所以显式转换多是不必要的。
而且在C语言中char和int是互相隐式转换的,所以直接可以在char和int间赋值都不会出错,不需要转化。

3、字符在C语言中是需要用单引号括起来的,所以
char x=A是错误的,应该是char x='A'

4、ASCII码只要赋值给char型自动就转化成字符了

(char)x+y:强制把x转换成字符型
(char)(x+y):强制x+y转换成字符型
(char)x,(char)(x):没有区别

定义char x=A,y=a;
(int)x,(int)(x),(int)x+y,(int)(x+y);跟上面的同理
是按ASCLL码值转换成相应的字符

int c=65;
(char)c;
结果:c='A'

将ASCII直接就可以转化为字符吧!定义一个char ch,然后就可以直接赋值ch=c;