为什么我输入2或者33 输出的都是“this is a digit”然后输入空格或者!输出“this is a control character”,输入#输出“this is an other character”
o(╥﹏╥)o才开始学c语言,很多东西都不明白,不要嘲笑我qwq
getchar获取的是字符,只能输入一个字符,你输入2,其实就是字符‘2’,并不是数字2;
输入33只能获取3字符。
因为!好的ascii<32;
#好的ascii都不做条件范围内,参考ASCII表:
因为getchar()只接收一个字符
在程序里char 是由ascii码序列排序的 从0-255;
getchar是获取一个字符,你输入的2或33时,被识别为字符'2'和'3',第二个3不会接受,字符'2'和'3'和数组2,3是不一样的
所以你的if判断中,输入字符‘2’,‘3’会满足if(c >= '0' && c <= '9')的条件,从而输出This is a digit
空格或者!的ASCII码值小于32,所以会满足 if(c < 32)的条件
#号字符ASCII码是35,前面条件都不满足,所以进入最后一个else
这就是代码里的判断语句发挥作用了,if() else if() 。
1.getchar()函数只接受一个字符,所以不管你输入3还是3215646最后c都是字符3
2.最早人们用8个二进制位(一个字节)来表示符号和英文字母,这就是ASCII码。每一个字符都对应一个ASCII码,C语言底层中符号也是以ASCII码进行储存和运算的。
1.getchar()函数只接受一个字符,所以不管你输入3还是3215646最后c都是字符3
2.最早人们用8个二进制位(一个字节)来表示符号和英文字母,这就是ASCII码。每一个字符都对应一个ASCII码,C语言底层中符号也是以ASCII码进行储存和运算的。所以c<32值得是c的ASCII码小于32,而在ASCII表中低于32的数字被规定用于控制字符或通信专用字符。
而0-9,a-z,A-Z在码表中都是从小到大排列的,所以(c>='a' && c <= 'z')就是判断a-z的字符
为啥按空格会接受那个条件