嵌入式Day4
复合赋值运算符-*/%int main() { int a 20; a 10; printf(a is %d\n,a); a 20; a - 5; printf(a - is %d\n,a); a 20; a * 5 3 ;// 由于运算符 优先级 一定是计算 53 在赋值 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); return 0; }逗号运算符使用逗号运算符连接的式子逗号表达式。 从左向右一次计算表达式的。最终整个表达式的值是最后一个 的值。sizeof 运算符计算变量常量表达式数据类型 在内存需要占用字节数。int main() { int a 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(a1 size is %lu\n,sizeof(a1));// 由对应的数据类型 return 0; }运算符的优先级运算符1)需要几个操作数。 单目双目三目2)优先级 。共15级。 数字越小优先级越高。圆括号 单目 双目 三目 赋值 逗号算术运算符 移位运算符 关系运算符 位运算 逻辑运算符3结合方向(结合率) 。 从左到右 从右至左。 大部分的都是从左至右。右结合 单目运算符赋值运算符条件运算符(?:)第二章 输入输出函数#include stdio.h 系统提供的输入输出函数(功能)的说明输入输出的参考点是计算机系统的内存。 如果数据进入内存输入。 如果数据是从内存中输出输出。函数接口包含 函数名函数的参数。函数名功能备注putchar传入一个需要输出到屏幕的字符 ,并显示int putchar(int c)putchar(h);putuchar(h1);char c o;putchar(c);getchar从终端接收一个字符int getchar(void);char c 0;c getchar();getchar(); // 不可以省略表示函数的调用。调用过程中需要保证参数匹配问题。参数的数据类型个数要对上大部分函数使用完后是有结果的。 只要不是void类型的函数。函数名功能备注printf向终端格式化输出字符串int printf(const char *format, ...);scanf从终端按照格式输入数据int scanf(const char *format, ...);printfint main() { #if 0 // int printf(const char *format, ...); printf(hello world\n);// char* 字符串 -》 就是字符串 printf(h\be\n); // \b 退格 printf(1\t2\t3\n); printf(4\t5\t6\n); printf(7\t8\t9\n); printf(hello \w\orld\n); // hello world printf(\\n\n); // 屏幕输出 \n printf(50%%\n); #endif int num 20 ; printf(num is %d, oct %o, hex %x\n,num,num,num); printf(num oct %#o, hex %#x\n,num ,num); char c A; printf(char is %c, ascii 编码 %d\n,c,c); double do_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); // 数据宽度 位5 printf( %05d, %05d,%05d\n,1,100,-20); // 空白处用0 填充 printf( %-5d, %-5d,%-5d\n,1,100,-20); // 左对齐 return 0; } 常用的非控制字符 // 转义字符 本质是一个字符 \n 换行符 \b 退格键 h\be; \t 制表符 \r 光标回到本行的开头 \ 输出 \\ 输出 \ %% 输出一个% 带控制字符的 有几个控制字符就需要传递几个参数 。传递的参数数据类型要和控制字符匹配 %d 有符号的整形数据 %c 按ascii码对应的图形输出 %f float 类型 double %lf double 类型 %s 输出字符串 %u 无符号的整形数据 %ld 有符号的整形数据 long %lu 无符号的整形数据 long %p 显示变量的地址。 %o 8进制输出 %x 16进制输出 %e 显示浮点数的以科学计数法方式显示 %#o, 以8进制输出 带前缀 0 %#x, 以16进制输出 带前缀 0x 扩展形式 %nd n:可以是一个数字 指定数据的显示宽度 高位不空格 printf( %5d, %5d,%5d\n,1,100,-20); 1, 100, -20 %.mf m 指定显示浮点数小数点后的位数 double do_var 3.14456456; printf(double .2f is %.2f\n,do_var); double .2f is 3.14 %-nd -号 表示显示数据的时间左对齐 %0nd 如果数据的宽度不够使用 0 填充空白处scanfint main() { // int scanf(const char *format, ...); int num 0 ; int num2 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); return 0; }在scanf 的接收过程中尽量少出现非控制字符// 错误的演示 不要加\n scanf(%d\n,num); // 在scanf 格式化接收中不要出现\n,会导致数据无法正常接收如果接收的是普通变量的话变量前都要加 获得变量的地址。scanf(%d,num);float d_var 0.0; printf(输入一个double :); scanf(%lf,d_var); // %lf 变量的类型必须是double 输入一个double :3.112379127391872923 f_var is 0.000000 *** stack smashing detected ***: unknown terminated 栈区崩溃 栈区存储临时变量的内存区域 \Aborted (core dumped)char name[30]{0}; // 数组 printf(输入一个人名:); scanf(%s,name); // 对数组类型不需要要加 printf(%s,你是个老六\n,name);在scanf 接收数据后建议都加一个getchar 接收输入缓冲区的\nint main() { int num 0; printf(input one num:); scanf(%d,num); printf(num is %d\n,num); char c 0; printf(input one char:); scanf(%c,c); // 会发现没有输入就结束了。 printf(c is %c\n,c); return 0; } 改进 int num 0; printf(input one num:); scanf(%d,num); printf(num is %d\n,num); getchar(); // 建议在scanf 后 都加一个getchar ,接收输入缓冲区中的\n char c 0; printf(input one char:); scanf(%c,c); // 等待接收 printf(c is %c\n,c); return 0;字符串的输入和输出函数函数名功能备注puts向终端输出一个字符串int puts(const char *s)参数传入变量常量都行在字符串的最后会加入\ngets从终端接收一个字符串char *gets(char *s);参数传入变量(数组)在输入内容的时候不要越界。越界后行为是不确定。int main() { puts(hello ,ni hao ); //会加入换行符 char str[256]nihao, zhangsan; puts(str); scanf(%s,str); printf(nihao,%s\n,str); return 0; }gets int main() { char name[5]{0}; printf(input person name); // 输入的内容大于 4字符以上就会出现越界 gets(name); //阻塞等待接收数据 printf(%s, hello\n,name); return 0; } linuxubuntu:~/20260422/02stdio$ ./a.out input person name张三 张三, hello 就会出现越界后的现象 。 *** stack smashing detected ***: unknown terminated Aborted (core dumped)附录运算符
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2592406.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!