标准输入和输出、控制字符格式与运算符优先级

标准输入和输出、控制字符格式与运算符优先级

前言

2024的考研大纲中同样也增加了这样的三个内容标准输入和输出、控制字符格式与运算符优先级。于是在这里详细学习一下。不学不行啊,md数学太难了,难得我头都要炸了,必须把专业课好好学,缓解一下数学的压力才行。专业课考到120的话,其他的,科目压力就不是很大了。

标准输入和输出

首先了解标准输入和输出
标准输出:C语言标准输出是一个接口库函数,已经写好了实现,我们只需要去调用它,就可以实现从终端中打印出信息。其实就是类似printf
标准输入printfscanf 两个函数原型相同,但是 scanf 在用起来,还是有些让人抓狂的错误。标准输出就是库中定义的类似scanf

所谓标准输入输出,我们先理解为通过控制台来输入和显示内容,只要是个操作系统都会有控制台,这是最基本的人机交互方式,后面会详细讲解标准输入输出的概念。标准输入输出是C语言初学者第一个要越过的门槛,特别是printf()scanf()这两个格式化输入输出函数,由于格式定义复杂导致很多人望而却步,其实标准输入输出函数并不是C语言定义的标准,而是stdio库中定义的函数,每个编译器实现不尽相同

我们这篇文章只讲6个函数,printf,scanf,getchar,putchar,gets,puts

printfscanf

printf() 是一个C语言标准库中的函数,用于格式化输出数据到标准输出(通常指屏幕)。它可以将不同类型的值转换为字符串,并根据指定的格式字符串打印输出。

关于printf函数的运算顺序

image-20231002134154568

这是我在之前的C语言碎碎念博客中提到的。这点需要注意一下。

scanf() 是 C 语言标准库中的一个函数,用于从标准输入(通常指键盘输入)读取数据,并按照指定的格式进行解析。

这两个函数本身其实不是很重要,但是重要的是,他们的控制字符格式,以及各种控制字符格式对应的特性。这些我会在下面的控制字符格式中详细说明。

getchar()putchar()函数

当从控制台输入输出单个字符时这两个函数的确比printf()scanf()方便,因为不用编写格式控制符,特别是getchar(),对变量赋值时能返回输入字符,不需要赋值时能清空缓存,或者干脆放到末尾放置程序退出。

getchar:能在屏幕上输入一个字符。
putchar:它可以输出一个字符到屏幕上。

getchar的例子

image-20231002131951357

putchar的例子

image-20231002132140868

gets()和puts()

puts()最大的特点是自动在末尾添加换行符,虽然不能忠实反应输出内容,但是极大方便了行输出,对应的gets()会读取并自动丢弃缓存中换行符并且忽略字符串中间的空格符,极大方便了行输入。

puts的例子

image-20231002133015231

gets的例子(我的编译器版本太高了,已经没gets了,就写个程序得了)

#include <stdio.h>

int main() {
    char str[50];

    printf("Enter a string: ");
    gets(str);

    printf("You entered: %s\n", str);

    return 0;
}

控制字符格式

这里面的讲究还是有很多的

type类型

在这里插入图片描述

flags

flags 规定输出样式,%后面可以跟 0 个或多个以下标志:

在这里插入图片描述

width

最小的输出宽度,用十进制数来表示输出的最小位数

在这里插入图片描述

precision 精度

在这里插入图片描述

length 长度修饰符

在这里插入图片描述

printf("%hd\n", 12345); //将数据以 short int 类型进行转换
printf("%ld\n", 12345); //将数据以 long int 类型进行转换
printf("%lld\n", 12345); //将数据以 long long int 类型进行转换

运算优先符

给出一个顺口溜把

C语言常用运算符的优先级口诀是:“单算关逻条赋逗”;
如果加入位运算符,完整口诀是:“单算移关与,异或逻条赋”。
■“单”表示单目运算符:逻辑非(!),按位取反(~),自增(++),自减(–),取地址(&),取值(*);
■“算”表示算术运算符:乘、除和求余(*,/,%)级别高于加减(+,-);
■“移”表示按位左移(<<)和位右移(>>);
■“关”表示关系运算符:大小关系(>,>=,<,<=)级别高于相等不相等关系(==,!=);
■“与”表示按位与(&);
■“异”表示按位异或(^);
■“或”表示按位或(|);
■“逻”表示逻辑运算符:逻辑与(&&)级别高于逻辑或(||);
■“条”表示条件运算符(? :);
■“赋”表示赋值运算符(=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=, |=,!=);
◆另,逗号运算符(,) 级别最低,口诀中没有表述,需另加记忆..


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。