1.运算符及其优先级常见的复合赋值运算符有以下几种-*/%使用方法见代码部分intmain(){inta20;a10;// a a 10printf(a is %d\n,a);a20;a-5;printf(a - is %d\n,a);a20;a*53;// 由于运算符 优先级 一定是计算 53 在赋值printf(a * is %d\n,a);a20;a/3;//printf(a / is %d\n,a);a20;a%3;//printf(a %% is %d\n,a);return0;}可以看到代码中的运算符是有优先级的在 a* 5 3 中先计算赋值运算符的左边再赋值。运算符的优先级可参考以下表格数字越小优先级越高。可以按照以下方法进行简记1)需要几个操作数。单目双目三目2)优先级 。共15级。数字越小优先级越高。圆括号 单目 双目 三目 赋值 逗号算术运算符 移位运算符 关系运算符 位运算 逻辑运算符3结合方向(结合率) 。 从左到右 从右至左。大部分的都是从左至右。右结合 单目运算符赋值运算符条件运算符(? :续上表逗号运算符使用逗号运算符连接的式子逗号表达式。 从左向右一次计算表达式的。最终整个表达式的值是最后一个 的值。sizeof 运算符计算变量常量表达式数据类型 在内存需要占用字节数。intmain(){inta0;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(a1 size is %lu\n,sizeof(a1));// 由对应的数据类型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(){intnum20;printf(num is %d, oct %o, hex %x\n,num,num,num);printf(num oct %#o, hex %#x\n,num,num);charcA;printf(char is %c, ascii 编码 %d\n,c,c);doubledo_var3.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_var3.14456456;printf(double .2f is %.2f\n,do_var);double.2fis3.14%-nd -号 表示显示数据的时间左对齐%0nd 如果数据的宽度不够使用0填充空白处scanf代码部分intmain(){// int scanf(const char *format, ...);intnum0;intnum20;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 的接收过程中尽量少出现非控制字符// 错误的演示 不要加\nscanf(“%d\n”,num); // 在scanf 格式化接收中不要出现\n,会导致数据无法正常接收如果接收的是普通变量的话变量前都要加 获得变量的地址。scanf(“%d”,num);在scanf 接收数据后建议都加一个getchar 接收输入缓冲区的\nintmain(){intnum0;printf(input one num:);scanf(%d,num);printf(num is %d\n,num);charc0;printf(input one char:);scanf(%c,c);// 会发现没有输入就结束了。printf(c is %c\n,c);return0;}改进intnum0;printf(input one num:);scanf(%d,num);printf(num is %d\n,num);getchar();// 建议在scanf 后 都加一个getchar ,接收输入缓冲区中的\ncharc0;printf(input one char:);scanf(%c,c);// 等待接收printf(c is %c\n,c);return0;}