今天我一直在调试自己的顺序表一个scanf语句代码如下:
printf("please input list:");
for(i = 0;i < MAX;i++){//如何解决除用%s以外其他方式来解决输入数组的问题
scanf("%d",&s[i]);
if (s[i]== '\n')
break;
}
printf("please choose: ")
当我输入lzm时,我通过调试才知道我所有输入的数全都是0,这时我无法理解,本来我输入了lzm为什么编译器把他们当作全是0来处理呢?
于是我自己有变了小的程序看看是不是scanf的问题或是printf问题,代码如下:
#include <stdio.h>
main(){
char a;
int c;
printf("please input num:\n");
scanf("%c,%d",&a,&c);
printf("the a and c 's result is:%c\n",a);
printf("%d\n",c);
}
以下时我输入的一些数及产生的结果:
please input num:
a,a
the a and c 's result is:a
0
please input num:
a,1
the a and c 's result is:a
1
通过上面两个结果我似乎得出这么一个结论:
char格式的只能输出字母,而int类型的只能输出阿拉伯数字。
于是我有猜想如果时其他的输入的字符呢?
于是有:
please input num:
(,}
the a and c 's result is:(
0
于是乎产生了下面这个结果
于是我又对照这ascii输入字符,有如下:
please input num:
a,48
the a and c 's result is:a
48
please input num:
48,a
the a and c 's result is:4
0
please input num:
%,^
the a and c 's result is:%
0
从中我得出这么一个结论,在gcc编译器中如果某个数时int类型的那么它只能输出数字0-9,对于其他的字符它将输出0;
对于char类型的输出的除了输入阿拉伯数字外,其他的字符都能打印出来,而对于阿拉伯数字,起输出什么都没有:
于是乎我觉得这它不给力了,为什么int类型不行输出其他字符呢?为什么呢?我无赖,坐在电脑桌前一直想,int类型什么时候只能输出阿拉伯数字了,那么自然时数字干吗在
32位的机器上给每个int类型的字符分配四个字节,这不是浪费空间么?不就是一个数字么,跟其他的字符有什么区别吗?为什么给每个char类型的字符只分配一个字节,这
公平么?
我一直在猜想,,,,希望有解答。。。