【C语言基础(二)】输入输出以及运算符

1、常用的数据输入/输出

1.1、输入/输出设备

  • C 语言中的标准库提供了输入和输出函数
  • 标准库提供:输入/输出函数来处理输入、输出、字符和字符串等操作
  • 标准输入设备通常是指键盘
  • 标准输出设备通常是指显示器(也称控制台)
  • 可以用文件代替标准输入和输出设备

1.1.1、控制台

  • 默认整个控制台屏幕共有80列(或40列)25行的文本单元, 每个单元包括一个字符和一个属性, 字符即ASCII 码字符

控制台的注意事项:
当输出超出屏幕的右边界时会自动转到下一行的开始处继续输出;
当屏幕内填满内容仍没有结束输出时, 屏幕将会自动逐行上卷直到输出结束为止

1.1.2、stdio头文件

  • #include <stdio.h>
  • 这是一个预处理命令
  • stdio.h 是一个文件,称为头文件
    - 包括对应于 C 语言程序中使用的输入/输出函数的宏
    - 所设计的 printf()、scanf()、putchar()、getchar() 等函数需要使用头文件中的这些宏才能正确执行

1.2、输入/输出语句

1.2.1、字符数据输入/输出

  • 控制台输入/输出函数将其操作指向系统的标准输入(键盘)和标准输出(显示器)
  • C语言中最简单的控制台输入/输出是:
    - getchar() – 从键盘读取一个(且仅一个)字符
    - putchar() – 在屏幕上输出一个字符
1.2.1.1、getchar函数
  • 函数原型:int getchar(void);//没有参数
  • 函数功能:从终端输入一个字符。
  • 返回值:返回输入字符的ASCII码,可以使用字符变量或者整型变量接收。
  • 其它说明:
    - getchar()函数没有参数,但仍然必须使用括号
    - 缓冲字符,直到用户按回车键。虽然可以输入多个字符,但函数只接受第一个字符。
#include <stdio.h>
int main()
{
	char cChar1;							//声明变量
	cChar1=getchar();						//在输入设备得到字符
	putchar(cChar1);						//输出字符变量
	putchar('\n');							//输出转义字符
	return 0;
}
1.2.1.2、putchar函数
  • 函数原型:int putchar(int c);
  • 函数功能:从终端输出一个字符, 且转换成ASCII码返回。
  • 函数参数:其中c要输出的字符,可以是字符型常量、字符型变量、整型常量、整型变量表达式、转义序列等。
  • putchar() 的选项和效果,如下表:
    在这里插入图片描述
#include <stdio.h>
int main()
{
	char cChar1,cChar2,cChar3,cChar4;		//声明变量
	cChar1='H';								//为变量赋值
	cChar2='e';
	cChar3='l';
	cChar4='o';
	putchar(cChar1);						//输出字符变量
	putchar(cChar2);
	putchar(cChar3);
	putchar(cChar3);
	putchar(cChar4);
	putchar('\n');							//输出转义字符
	return 0;
}

1.2.2、字符串输入/输出

1.2.2.1、gets函数
  • 函数原型:char*gets(char *str);
  • 函数功能:将读取的字符串保存在形式参数str变量中,读取过程直到出现新的一行为为止。
  • 函数参数:str函数指针变量为形式参数。
#include<stdio.h>
int main()
{
//说明:因为要接收输入的字符串,所以要定义一个可以接收字符串的变量。
//在程序代码中,定义cString为字符数组变量的标识符
	char cString[30];				//定义一个字符数组变量
	gets(cString);					//获取字符串
	puts(cString);					//输出字符串
	return 0;
}
1.2.2.2、puts函数
  • 函数原型:int put(char* str);
  • 函数功能:输出一个字符串到屏幕上。
  • 函数参数:形式参数str是字符指针类型,可以用来接收要输出的字符串。
#include<stdio.h>
int main()
{
//在下面的语句中,加上“\0”字符后,puts函数输出的字符串就变成了“I”.
	char *Char ="ILOVECHINA";			//定义字符串指针变量
	puts("ILOVECHINA");					//输出字符串常量
	puts("I\0LOVE\0CHINA");				//输出字符串常量,其中介入结束符“\0”
	puts(Char);							//输出字符串变量的值
	Char="I\0LOVE\0CHINA";				//改变字符串变量的值
	puts(Char);							//输出字符串变量的值
	return 0;
}

说明:编译器会在字符串常量的末尾添加结束符“\0”,这也就说明了puts函数会在输出字符串常量时最后进行换行操作的原因。

1.2.3、格式输入/输出

1.2.3.1、scanf函数
  • 函数功能:用于接收数据
  • 函数返回值:输入成功的参数数量,否则返回0
  • 函数原型:
    在这里插入图片描述
#include <stdio.h> 
int main() { 
	int a; 
	float d;
	char ch, name[40];
	printf("Please enter the data\n ");
	scanf(“a=%d%f%c %s”, &a, &d, &ch, name);//空格、回车、Tab
	printf("\n%d, %f, %c, %s", a, d, ch, name);
	return 0;
}
1.2.3.2、printf函数
  • 函数功能:用于在标准输出设备控制台上显示数据
  • 函数返回值:输出的字符数量,如果错误返回EOF
  • 函数原型:
  • 在这里插入图片描述
#include <stdio.h>
#include <math.h>
int main(){
	int iNum = 10; 
	float fNum = 24.6789; 
	char ch = ‘A’; 

	printf("iNum  = %d\n", iNum);
	printf("fNum  = %f\n",fNum );
	printf("ch = %c\n",ch);
	printf("hello\n");
	printf("%s","hello\n");
	
	printf(%%);	    //输入百分号
	printf(%c\n”,%);//
	return 0;
}

1.2.4、输出格式

在这里插入图片描述

1.2.5、转义字符

在这里插入图片描述

1.3、输入/输出缓冲区

  • 缓冲区(流)负责在输入/输出设备和程序之间建立联系。
    - 输入设备->内存缓冲区(stdin)->程序
    - 程序->内存缓冲区(stdout)->输出设备
  • 是一块临时的存储区域,或在内存中,或在设备的控制卡上
    在这里插入图片描述

2、运算符与表达式

2.1、运算符

  • 根据操作数的数量可以分为:一元运算符、二元运算符和三元运算符
  • 根据用途可以分为以下几类:
    - 赋值运算符
    - 算术运算符
    - 关系运算符
    - 逻辑运算符
    - 位运算符……
  • 运算符的优先级和结合方向
    - 按运算符的优先级高低次序执行。例如,先乘除后加减。
    - 如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。

2.1.1、算术运算符

在这里插入图片描述

  • 算术表达式中的运算符都是算术运算符。
  • 示例:
    - (x+y)/2-1
    - ++i % 7
    - (i++)+(i++)和(++i)+(++i)

C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,22/5结果等于4,而不是4.4。

2.1.2、赋值运算符

  • 赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。
  • 通用的形式:变量名=表达式
  • 将同一个值赋给多个变量的操作叫做多重赋值 a=b=c=10

在这里插入图片描述

2.1.3、复合赋值运算符

在这里插入图片描述

还可以与位运算符构成复合赋值运算符,如:^=、<<=、>>=、&=、|=

2.1.4、位运算符

在这里插入图片描述

2.1.5、运算符结核性

在这里插入图片描述

所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。
自从左向右的结合方向,称为左结合性。反之,称为右结合性。

2.2、表达式

用运算符和括号将操作数连接起来的、符合C语言语法规则的式子,称为表达式

  • 运算符和操作数的有效组合
  • 操作数可以是变量、常量或者函数
  • 在程序执行的过程中,变量的实际值和表达式中出现的常量一起使用
  • 表达式可分为:
    - 算术表达式
    - 关系表达式
    - 逻辑表达式
    - 函数表达式

2.2.1、赋值表达式

  • 所有的赋值运算符的优先级相同
  • 始终按从右向左顺序进行计算(a=b=c=5)
  • 赋值运算符的优先级低于算术运算符,仅高于逗号运算
  • 赋值表达式
    - 由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。
    - 赋值表达式的值:任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。

2.2.2、关系表达式

用于测试两个操作数或两个表达式之间的关系,其中操作数可以是变量、常量和表达式

在这里插入图片描述

  • 关系表达式的计算结果 = 逻辑值(真-非0或假-0)

在这里插入图片描述
注意:

  1. if(a==1) 不要写成if(a=1) ! ! ! 最好写成if(i ==a)
    因为如果写成if(1=a),编译器会报错

  2. 不能写成if(1<a<5) 要写成 if(a>1 && a<5)

2.2.3、逻辑表达式

  • 逻辑运算符用于对包含关系运算符的表达式进行合并或取非
  • 使用逻辑运算符的表达式,返回 0 表示假,返回 1 表示真
    在这里插入图片描述

逻辑表达式计算有时会出现部分表达式不参加运算的情况(短路现象)
例子:int a=1,b=2; if(a<5 || (b=10)) printf(“b=%d\n”,b); 观察b的值

2.2.4、优先级

  • 优先级建立了计算算术表达式时,一组运算符相对于另一组的层次关系
  • 优先级指 C 语言计算运算符的顺序
  • 可通过将表达式括在括号中来改变运算符的优先级
  • 优先级别相同,运算次序由结合方向决定
  • 运算符的结合方式有两种:左结合和右结合
  • 不同的运算符要求有不同的运算对象个数
  • 当一个表达式中的运算符具有相同优先级时,结合性还指出C语言计算这些运算符的顺序

2.3、类型转换

运算符的操作数属于不同的数据类型,运算时通常会将这些操作数转换为同一类型,由编译系统自动完成。

  • 在赋值表达式中,自动将赋值运算符右边表达式的值的类型转换成左边变量的类型
  • 级别高低
    char->short->int(long)->unsigned int->float->double(long double)
    在这里插入图片描述

2.4、type强制类型转换

通过使用转换可以将一个表达式强制转换成某一种类型,是一元运算符。

  • 转换的通用语法是:
  • (type) cast
  • type 任意有效的 C 数据类型
  • 示例:
    在这里插入图片描述
  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值