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读取字符的时候就直接读取末尾的换行符拉。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值