我的下划线 发表于 2014-3-16 12:58:42

C中为什么数字不能当做字符变量来用?

#include "stdio.h"
void main()
{
char a, b;
a = 120;
b = 121;
printf("%c,%c\n",a,b);
    printf("%d,%d\n",a,b);
}
/*void main()
{
char 3, 4;
3 = 120;
4 = 121;
printf("%c,%c\n",3,4);
    printf("%d,%d\n",3,4);
}*/    这个程序上面那种写法没错 而下面那个写法是错的编译不能通过,不是说 不管是 a 呀 还是b或者34对于CPU来说都是二进制的数么 ? 那为什么不能用数字作为变量呢?也就是说CPU把3  4当成数字 而不是字符变量 就像小学学解方程时候 老师教我们设置未知数X 比如说 3+x=7 解出来x=4;和设置 未知数为猪 3+猪=7 解 出来 猪=4 这里的X和猪应该是没有区别的啊只是个代号那为什么CPU 不认 数字代号 只认字母代号呢?CPU内部到底是怎么看待这些东西呢? 求详细的解释 谢谢大神们了

小甲鱼 发表于 2014-3-16 12:58:43

我的下划线 发表于 2014-4-19 21:36 static/image/common/back.gif
我的想法是 当我上面使用了char 3, 4 定义3 和4 的时候就应该告诉编译器了3 和4 是符号 而不是数字   ...
电脑只认识数字,不认识字母,所谓的字符只是通过char让编译器去查ASCII码表,因此C语言或任何一门编程语言是不允许定义char 3, 4这种形式的,因为这很容易产生歧义。

machimilk 发表于 2014-3-16 13:11:22

你高估编译器的智商了.........

可乐88989 发表于 2014-3-20 08:04:43

数字是常量怎么能当变量用呢?
如果可以的话,程序起不乱套了!!

小甲鱼 发表于 2014-3-20 10:13:14

就你的例子来说,你调用printf("%c,%c\n",3,4);是希望程序把120和121打印出来呢,还是希望把数字3和4对应的ASCII字符打印出来呢?很明显会产生歧义。

我的下划线 发表于 2014-4-19 21:36:58

小甲鱼 发表于 2014-3-20 10:13 static/image/common/back.gif
就你的例子来说,你调用printf("%c,%c\n",3,4);是希望程序把120和121打印出来呢,还是希望把数字3和4对应的 ...

我的想法是 当我上面使用了char 3, 4 定义3 和4 的时候就应该告诉编译器了3 和4 是符号 而不是数字就是要系统把34当符号看 而不是数字 所以最后在使用printf("%c,%c\n",3,4);输出的时候肯定不是打印其对应的ASCII码了啊你说的
你调用printf("%c,%c\n",3,4);是希望程序把120和121打印出来呢,还是希望把数字3和4对应的 ...这句
和正常使用情况下的printf("%d,%d\n",a,b);这个 是打印 a b对应的ascii码呢还是打印120 和121 呢? 没什么区别吧?0-9 和a-Z都是ascii码中一一对应的那为什么电脑对他们就不一视同仁只认字母 不认数字

小甲鱼 发表于 2014-4-19 21:47:37

我的下划线 发表于 2014-4-19 21:36 static/image/common/back.gif
我的想法是 当我上面使用了char 3, 4 定义3 和4 的时候就应该告诉编译器了3 和4 是符号 而不是数字   ...

如果允许char 3 = 120,那请问我应该如何把数字3给打印出来呢?
页: [1]
查看完整版本: C中为什么数字不能当做字符变量来用?