C语言中有关于数据类型的几个问题

1.整型数据转换成字符型数据时数据过大;

int  ch1 = 5566;

char  ch2 = (char)ch1;

printf("%c \n", ch2 );

输出乱码�;char类型最大范围到127,所以ch1最大只能到127。

2.int  ch1 = 0x128;

int  *ch2 = (int*)ch1;  

printf("%d \n", *ch2 );

int  ch1 = 0x128;

int  *ch2 = (int)ch1;

printf("%d \n", *ch2 );

结果是否相同?  实验表明结果相同(int*)ch1 把ch1转换成整型指针,其内容为0x128,第二个相当于将地址0x128直接给指针变量ch2。

3.int  ch1 = 97;

char  *ch2 = (char*)ch1;

printf("%c \n", *ch1 );

int  ch1 = 97;

char  *ch2 = ch1;

printf("%c \n", *ch1 );

结果是否相同?实验表明结果相同,但 char  *ch2 = ch1; 在一些软件上回报错,最好不要使用。

----上述两个问题说明变量ch1的值是本质,而变量类型是其外在表现。

4.int  a = 1 , b = 2 ;

 {

     int a = 9;

printf("%d    %d   ",  a,   b);

}

printf("%d     ",   a);

输出结果如何?

9     2    1     复合语句内定义变量a只在符合语句内起作用,变量b不仅作用于外部还用于复合语句内部。

以上内容如有错误欢迎指正

猜你喜欢

转载自blog.csdn.net/qq_41151162/article/details/82916367