C学习之路-scanf输入char类型直接跳过,变量定义说明!

一:定义一个char类型变量的时候,如果没有初始化为常量,默认值为空字符,对应ASCII为0,所占内存为1个字节

二:定义一个int类型变量的时候,如果没有初始化为常量,默认值为 0,所占内存为4个字节

三:定义一个数组类型变量的时候,如果没有初始化,每个元素的值都是随机的,所占内存为单个类型所占字节*数组长度

   1、声明时,使用 {0} 初始化;
   2、使用memset;
   3、用for循环赋值。

四:执行以下代码:

#include <stdio.h>

int main(void){
  int s;//定义int变量
  char xkl;

  printf("给int变量S赋值:\n");
  scanf("%d",&s);
  printf("给char变量x赋值:");
  scanf("%c",&xkl);

  printf("S=%d,X=%c\n",s,xkl);

  return 0;
}

你会发现结果是scanf("%c",&xkl)还没让我输入就直接跳过拉?然后萌新就很蒙?我擦!怎么肥事.

其实你将printf换一种写法就会明白:

  printf("S=%d,X=%d\n",s,xkl);

你会发现打印出来的X=10,对照ASCII是换行符,这就明白拉,原来在第一个scanf键入int的时候,末尾还有一个换行符,

所以第二个scanf读取字符的时候就直接读取末尾的换行符拉。

猜你喜欢

转载自blog.csdn.net/qq2523208472/article/details/84035186