C语言操作符和输入输出函数
C语言的操作符分为运算符、赋值符以及单目操作符等
运算符
加法运算符(“+”)
加法运算符通常用在多个数据或者变量进行相加的情形,在代码中使用如下图:
#include<stdio.h> int main() { int a = 10; int b = 20; printf("a + b = %d",a+b);//运行结果为a + b =30 return 0; }减法运算符(“-”)
减法运算符通常用在多个数据或者变量进行相减的情形,在代码中使用如下图:
#include<stdio.h> int main() { int a = 20; int b = 10; printf("a - b = %d",a-b);//运行结果为a - b =10 return 0; }乘法运算符(“*”)
乘法运算符通常用在多个数据或者变量进行相乘的情形,在代码中使用如下图:
#include<stdio.h> int main() { int a = 20; int b = 10; printf("a * b = %d",a*b);//运行结果为a * b =200 return 0; }除法运算符(“/”)
除法运算符通常用在多个数据或者变量进行相除的情形,当被除数和除数均为整数时正常进行运算,当需要最后的结果为浮点数时,被除数和除数二者其中一个必须为浮点型,否者不能输浮点型的商,在代码中使用如下图:
#include<stdio.h> int main() { float a = 10.0; int b = 20; printf("a / b = %f",a/b);//运行结果为a / b =0.5 return 0; }取模运算符(“%”)
取模运算符通常用于两个整数之间,求两者相除后的余数,当进行负数取模时,由前面一个数的符号决定最后取模结果的符号,取模运算常用于求一个任意数的最后一位数(将任意一个数对10进行取模运算),在代码中使用如下图:
#include<stdio.h> int main() { int a = 10; int b = 3; int c = -10; int d = -3; printf("a % b = %d",a%b);//运行结果为a % b =1 printf("c % b = %d",c%b);//运行结果为c % b =-1(符号由c决定) printf("a % d = %d",a%d);//运行结果为a % d =1(符号由a决定) return 0; }赋值运算符
基础赋值运算符(“=”)
基础赋值运算符只有一个“=”,一般用于直接给变量赋值,在代码中使用如下图:
#include<stdio.h> int main() { int a = 0; a = 10;//这里的“=”为赋值符 return 0; }复合赋值符
复合赋值符有“+=”、“-=”、“*=”、“/=”、“%=”等,均是进行运算后再赋值,例如:“a += 3”等同于“a = a+3”,在代码中使用如下图:
#include<stdio.h> int main() { int a = 10; printf("%d",a+=3);//运行结果为13 printf("%d",a-=3);//运行结果为7 printf("%d",a*=3);//运行结果为30 printf("%d",a/=3);//运行结果为3 printf("%d",a%=3);//运行结果为1 return 0; }单目操作符
单目操作符有“++”、“--”、“+”、“-”四种,并且“++”和“--”前置和后置是不同的,前置时(++a),先进行+1运算再进行赋值,后置时(a++),先进行赋值再进行+1运算,“+”、“-”仅改变变量符号, ,在代码中使用如下图:
#include<stdio.h> int main() { int a = 2; printf("%d",a++);//最终运算结果为:2 printf("%d",++a);//最终运算结果为:3 printf("%d",a--);//最终运算结果为:2 printf("%d",--a);//最终运算结果为:1 printf("%d",-a);//最终运算结果为:-2 return 0; }强制类型转换
在有需要时可以强制进行数据类型的转换,例如:int a = (int)1.23,将浮点型数据1.23强制转换为整数类型1,但是有些类型之间是不能够进行转换的,例如结构体不能转换为整形、浮点型,在代码中使用如下图:
#include<stdio.h> int main() { int a = (int)3.45;//a = 3 return 0; }输出函数(“printf()”)
输出函数常用于输出一些数据,其基本输出形式分为两种,一种是“printf("数据")”,另一种是“printf("数据类型对应的占位符",变量名称或直接写数据)”。
占位符
占位符顾名思义用于占着位置的符号,在输入、输出函数中应用广泛,占位符有:
- “%d”(int)
- “%hd”(short int)
- “%ld”(long int)
- “%lld”(long long int)
- “%u”(unsigned int)
- “%hu”(unsigned short int)
- “%lu”(unsigned long int)
- “%llu”(unsigned long long int)
- “%o”(八进制整数)
- “%x”(十六进制整数)
- “%f”(float)
- “%lf”(double)
- “%Lf”(long double)
- “%c”(char)
- "%s"(str)字符串
- “%a”(十六进制浮点数,字母用小写字母)
- “%A”(十六进制浮点数,字母用大写字母)
- “%e”(使用科学计数法的浮点数,指数部分的e为小写)
- “%E”(使用科学计数法的浮点数,指数部分的E为大写)
- “%zu”(size_t类型)
- “%%”(输出一个百分号)
- “%p”(用于打印地址)
占位符的限宽
- 整形占位符的限宽:%5d (限宽5位),long int,long long int等其他整形数据类型的占位符限宽形式与其一致
- 浮点形占位符的限宽:%12f (限宽12位),float,double,long double等其他浮点形数据类型的占位符限宽形式与其一致,浮点型数据进行小数点后为位数的控制:%.3f (保留三位小数),限宽与保留小数可同时作用:%5.3f (宽度为5且保留三位小数的浮点型数据)
- 字符型占位符的限宽:%.3s (限宽3个字符)
占位符的对齐方式
- 默认为右对齐方式,右对齐意味着限宽位数比输出的数据位数多出的位数会在最左边添加空格进行补位操作;
- 左对齐方式是在占位符中间添“-”,例如:%-5d (左对齐方式下的5位整形数据),其他类型数据的占位符的左对齐方式设定方法也是一致。
printf()函数在代码中的使用如下:
#include<stdio.h> int main() { int a = 10; float b = 3.14; char str1[5] = "abcde"; printf("%3d",a);//最终运行结果: 10 printf("%5.3f",b);//最终运行结果:3.140 printf("%3s",c);//最终运行结果:abc return 0; }目录
运算符
加法运算符(“+”)
减法运算符(“-”)
乘法运算符(“*”)
除法运算符(“/”)
取模运算符(“%”)
赋值运算符
基础赋值运算符(“=”)
复合赋值符
单目操作符
强制类型转换
输出函数(“printf()”)
占位符
占位符的限宽
占位符的对齐方式
输入函数(“scanf()”)
注意事项
输入函数scanf()常用于输入数据,一般形式为:“scanf("对应数据类型的占位符",&变量名)”,允许输出多个变量。scanf()函数的返回值是一个整数,代表成功读取到的数据个数,在读取时如果遇到读取数据类型不匹配,读取失败,则后面的数据将不会继续读取;在未识别到任何数据,就发生读取错误或者读取到文件结尾,则返回EOF(-1)。输入函数的返回值常用于循环语句中的判断条件,从而进行具体功能的实现,例子如下:
#include<stdio.h> int main()//实现可以连续不断的输入两个数据进去进行加法计算 { int a; int b; while(scanf("%d%d",&a,&b) == 2)//识别成功读取两个数据后进入循环计算加法 { int c = a + b; printf("%d",c); } return 0; }注意事项
- scanf()的" "中不能加“\n”(加入后按回车键无法完成输入);
- "%[ ]"可以限定数组中的输出内容范围,其在代码中的使用如下;
- 在输入数据时,“%c”不能忽略空格,其余数据类型均可忽略输入时的空格;
- “%s”在输入数据时,从第一个非空白字符开始,遇到空白字符(空格、换行符,制表符)结束;
- scanf()函数不会限制读取字符个数,可能会溢出,这是它不安全的原因。因此在在输入字符串时最好进行限宽处理;
- scanf()输入数据的格式和“ ”中的格式必须一致,如果想更自由一点输入,需要在每两个挨着的输入数据占位符之间使用一个赋值忽略符(在占位符中间加上“*”就会变成赋值忽略符),赋值忽略符对应输入的数据会被识别到,但是识别到后会被立刻丢弃,不会把值赋给后面的变量 ,因此在后面不用提供对应变量地址。
#include<stdio.h> int main()//注意事项2 { char str1[100]; scanf("%[0-9]",str1);//数组名本身就是地址 printf("%s",str1);//输入:123456A456789,最终的运行结果为:123456 return 0; }#include<stdio.h> int main() { int year; int mouth; int day; scanf("%d-%d-%d",&year,&mouth,&day)//输入数据时格式为:2026-07-07,与“ ”中格式保持一致 return 0; }想要输入得更自由,使用赋值忽略符如下:
#include<stdio.h> int main() { int year; int mouth; int day; scanf("%d%*c%d%*c%d",&year,&mouth,&day)//输入数据时格式为:2026 07 07,或者每个数据之间按回 车也可以正常输入数据,相对更 自由。 return 0; }