使用scanf和赋值读取变量之间的区别

Jag*_*gan 2 c

int main()
{
  int i,j;
  i='c';

  scanf("%d",&j);   // I will read 'c' here 

  printf("%d %d",i,j);

}
Run Code Online (Sandbox Code Playgroud)

输出不一样.'j'获取垃圾值并'i'获取ascii值'c'.任何人都可以说出原因是什么?

Pab*_*ruz 6

scanf说:

scanf("%d", &j);
Run Code Online (Sandbox Code Playgroud)

使用此句子scanf将尝试将您用作函数输入的'c'字符解析(转换)为数字.这就是你得到垃圾的方式.C不知道如何将'c'变成数字,因为scanf期待数字.

尝试将其更改为:

scanf("%c", &j);
Run Code Online (Sandbox Code Playgroud)

如果您的printf电话是这样的:

printf("%d %d", i, j);
Run Code Online (Sandbox Code Playgroud)

两次都应该得到相同的值:'c'字符的ASCII值.