问题描述:
在C语言中,char类型是可以被int类型所接收的它的值将会是对应字符所产生的ASCII码值,但是,我在执行输入语句(scanf)的时候,获得了一个意外的数字,程序代码如下
int n, m;
scanf("%d %d", &n, &m);
printf("n=%d, m=%d", n, m);
输入2,2 -> 结果: n=2, m=8
这个8是怎么来的,我设想,可能是在输入的时候字符和数字错误的被C语言scanf接收了,但是并不是这样。
我重新尝试了下面的代码
int testCommmaToInt = ",";
printf("%d \n", testCommmaToInt);
// 我执行了这段程序但是没有什么作用,C语言给我返回了我引号中内容的内存地址
C语言为我提供了一些警告,但是程序依然可以运行
main.c:19:23: warning: initialization of 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
int n, m;
scanf("%d %d", &n, &m);
printf("n=%d, m=%d", n, m);
int new;
scanf("%d", &new);
printf("new=%d \n", new);
我重新执行了,这段这段程序并为这段程序添加new的变量名,并实验C语言是否可以为我接收我,上一个scanf剩余的输出流,但事实并非如此,new变量并没有捕获任何信息并且,它在我输入2,2按下Enter的时候已经结束了scanf语句的录入。
这是怎么回事?请帮帮我,非常感谢!