C语言基础(二)运算符、输入输出函数
2026/4/27 1:33:41 网站建设 项目流程

1.运算符及其优先级

常见的复合赋值运算符有以下几种
+=
-=
*=
/=
%=
使用方法见代码部分

intmain(){inta=20;a+=10;// a = a +10printf("a += is %d\n",a);a=20;a-=5;printf("a -= is %d\n",a);a=20;a*=5+3;// 由于运算符 优先级 一定是计算 5+3 在赋值printf("a *= is %d\n",a);a=20;a/=3;//printf("a /= is %d\n",a);a=20;a%=3;//printf("a %%= is %d\n",a);return0;}

可以看到代码中的运算符是有优先级的在 a*= 5 +3 中,先计算赋值运算符的左边再赋值。运算符的优先级可参考以下表格,数字越小优先级越高。
可以按照以下方法进行简记:
1)需要几个操作数单目,双目,三目
2)优先级 。共15级。数字越小,优先级越高
圆括号 > 单目 >双目 > 三目> 赋值 > 逗号
算术运算符 >移位运算符 >关系运算符 > 位运算 > 逻辑运算符
3)结合方向(结合率) 。 从左到右; 从右至左。大部分的都是从左至右。
右结合 ,单目运算符,赋值运算符,条件运算符(? :)


续上表
逗号运算符

使用逗号运算符连接的式子,逗号表达式。 从左向右,一次计算表达式的。最终整个表达式的值,是最
后一个 的值。

sizeof 运算符
计算变量,常量,表达式,数据类型 ,在内存需要占用字节数。

intmain(){inta=0;a=(1,2,3*4,5);printf("a is %d\n",a);// 这个地方,是函数的参数传递 ,不是逗号表达式printf("%d, %d, %d ,%d,%d\n",1,2,3,4,5);printf("int size is %lu\n",sizeof(int));// 可以使用类型 ,计算内存大小printf("a size is %lu\n",sizeof(a));// 可以使用变量,计算内存大小、printf("a+1 size is %lu\n",sizeof(a+1));// 由对应的数据类型return0;}

2. 输入输出函数

#include <stdio.h> 系统提供的输入输出函数(功能)的说明,输入输出的参考点,是计算机系统的内存。 如果数据进入内存,输入。 如果数据是从内存中输出,输出。

字符输入输出函数

函数名功能
putchar传入一个需要输出到屏幕的字符 ,并显示 int putchar(int c);
getchar从终端接收一个字符,int getchar(void);

提示!!!:
getchar(); // () 不可以省略,表示函数的调用。
调用过程中,需要保证,参数匹配问题。参数的数据类型,个数要对上,
大部分函数使用完后,都是有结果的。 只要不是void类型的函数。

函数名功能
printf向终端格式化输出字符串 int printf(const char *format, …);
scanf从终端按照格式输入数据int scanf(const char *format, …);

printf代码部分

intmain(){intnum=20;printf("num is %d, oct %o, hex %x\n",num,num,num);printf("num oct %#o, hex %#x\n",num,num);charc='A';printf("char is %c, ascii 编码 %d\n",c,c);doubledo_var=3.14456456;printf("double is %f\n",do_var);printf("double is %lf\n",do_var);printf("double is %e\n",do_var);//科学计数方式printf("double .2f is %.2f\n",do_var);//显示小数点后2位printf("%s,你好!\n","张三");// %s 显示字符串printf("显示 num 在内存中的地址:%p\n",&num);// & 获得num变量的内存地址printf(" %5d, %5d,%5d\n",1,100,-20);// 数据宽度 位5printf(" %05d, %05d,%05d\n",1,100,-20);// 空白处,用0 填充printf(" %-5d, %-5d,%-5d\n",1,100,-20);// 左对齐return0;}说明: 常用的非控制字符// 转义字符, 本质是一个字符\n 换行符 \b 退格键"h\be";\t 制表符 \r 光标回到本行的开头 \" 输出 "\\ 输出 \%%输出一个%带控制字符的, 有几个控制字符,就需要传递几个参数 。传递的参数数据类型要和控制字符匹配%d 有符号的整形数据%c 按ascii码对应的图形输出%ffloat类型,double%lfdouble类型%s 输出字符串%u 无符号的整形数据%ld 有符号的整形数据long%lu 无符号的整形数据long%p 显示变量的地址。%o8进制输出%x16进制输出%e ,显示浮点数的,以科学计数法方式显示%#o,8进制输出 ,带前缀0%#x,16进制输出 ,带前缀0x 扩展形式%nd n:可以是一个数字 指定数据的显示宽度 ,高位不空格printf(" %5d, %5d,%5d\n",1,100,-20);1,100,-20%.mf m 指定显示浮点数,小数点后的位数doubledo_var=3.14456456;printf("double .2f is %.2f\n",do_var);double.2fis3.14%-nd ,-号 表示显示数据的时间,左对齐%0nd, 如果数据的宽度,不够,使用0填充空白处

scanf代码部分

intmain(){// int scanf(const char *format, ...);intnum=0;intnum2=0;printf("请输入2个数:");在进行scanf 数据接收的时候,scanf 会严格按照给定格式,进行匹配。如果格式匹配失败,放弃接收//scanf("请输入一个数%d",&num); //&num 表示num的地址,scanf 可以一次性,接收多个变量。 变量和变量之间 使用 tab 键,回车键,分隔。scanf("%d%d",&num,&num2);// tab 键,回车键printf("num is %d, num2 %d\n",num,num2);return0;}

说明
在scanf 的接收过程中,尽量少出现非控制字符
// 错误的演示 不要加\n

scanf(“%d\n”,&num); // 在scanf 格式化接收中,不要出现\n,会导致数据无法正常接收

如果接收的是普通变量的话,变量前都要加 & ,获得变量的地址。
scanf(“%d”,&num);

在scanf 接收数据后,建议都加一个getchar ,接收输入缓冲区的\n

intmain(){intnum=0;printf("input one num:");scanf("%d",&num);printf("num is %d\n",num);charc=0;printf("input one char:");scanf("%c",&c);// 会发现,没有输入,就结束了。printf("c is %c\n",c);return0;}改进intnum=0;printf("input one num:");scanf("%d",&num);printf("num is %d\n",num);getchar();// 建议在scanf 后 ,都加一个getchar ,接收输入缓冲区中的\ncharc=0;printf("input one char:");scanf("%c",&c);// 等待接收printf("c is %c\n",c);return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询