问题一:/* 环境:Microsoft Visual C++ 2010 学习版
* 文件名:charTest.c
* 作用:理解字符型变量
* 日期:2021 年 9 月 15 日
*/
#include <stdio.h>
#include <Windows.h>
int main( )
{
char i;
int d=0;
scanf( "%d" ,&d) ;
printf("d = %d\n", d);// 输入小写字母,无法存放到整型变量 d 标识的存储空间
i = getchar();// getchar() 将输入的一个小写字母和后续的字符都存入了缓冲区
d = i- 'a'+1;// 字符以 ASCII 码值(整型值)存在于计算机,'b'-'a' 将得到整型值 1
printf( "%d\n",d);
printf( "%d\n",getchar());//输出紧跟小写字母后的一个字符的 ASCII 码值
system("pause");
return 0;
}
编译运行,输入小写字母a+空格,再回车:
编译运行,输入小写字母a,再回车:
问题二:
我的理解是,算术运算符用于对运算电路的控制,而字符存放于某部分存储单元,在计算机的总线中,它们不可能交叉控制。
就像我用竹筷子吃做得非常像筷子的食物,不可能反过来,用做得非常像筷子的食物来夹起竹筷子往嘴里送。字符*和乘法运算符*表面上长得一模一样,但是本质上是两个不同类型的数据,前者是被操作数,后者是操作码。 |