混合运算-scanf读取标准输入原理

发布时间 2024-01-02 20:41:55作者: paopaotangzu

1.混合运算

强制类型转换实际上是运算符的一种,例如将整型变量i转换为浮点型的表达式:(float) i
这种运算的作用是当我们在进行除法运算时,如下所示:

int i = 5;
float j = i / 2;   //j的值是5
float k = (float)i / 2;   //k的值是2.5,原因是表达式``(float)i``把整型5转换为5.0,做浮点数除法

2.scanf函数的原理

  • 在标准输入缓冲区中,用户输入的数字、字符等,都以一个个字符形式存在缓冲区中,例如10是以1、0两个字符的形式,scanf函数就是用于读取这两个字符并转化为数字10。
    行缓冲:在这种情况下。当在输入和输出中遇到换行符时,将执行真正的I/O操作。这时,我们输入的字符先存放到缓冲区中,等按下回车键换行时才进行实际的I/O操作,典型代表是标准输入缓冲区(stdin)标准输出缓冲区(stdout)
  • scanf函数在读取整型数、浮点数、字符串时会忽略'\n'(回车符)、空格符等字符,忽略是指scanf函数执行时会首先删除这些字符,然后再阻塞。
  • scanf函数在执行scanf("%c",&c)语句时,不会忽略任何字符

3.ASCII码表

ascII码
实际上转义字符\0在ASCII码表中对应的是0,也就是说在计算机中,它用二进制表示数字0的方式来存储。而\n在ASCII码表中对应的是数字10,所以这些转义字符也是字符常量,不会被scanf执行%c时忽略。