1.当然是不可以的
解释:
char的范围是有符号-128 ~ 127无符号0 ~ 255
int的范围是-32768 ~ 32767
所以只有当你表示的数据的值在它们的公共范围之内是可以替换的,如果不在公共范围之内就不可以替换!
int main()
{
short int c1;
cin>>c1;
char c2;
c2=getchar();
putchar(c1);
printf("%d",c2);
getch(); return 0;
}
当输入1111q 时 当输入11111q 时 当输入111111q 时 当输入1111111q 时
结果是W113 结果是g113 结果是?13 结果是?13
所以整型变量与字符型变量之间的相互替换只有在整型变量的范围之内!
还有当整型变量是 int c1时:
输入111111q时 结果是113(此处113前面应该没有定义内容,在ASCII中空出来了,所以结果是113,以为输入111114q时 结果是 换行符113);
输入11111q时 结果是g113;
输入111111111q时 结果是?13;
其他的你自己试试!
之所以能这样,和补码的知识有关!当输入的值是1111时,因为chai的取值个数范围0~~~~·256之间,所以1111-256*4=87;在ASCII中对应W;而q转换成数值时是113;
我知道的只有这么多了,其他的你自己可一看看相关的书籍!
no