今天是学习嵌入式的第四天,今天主要补充学习了赋值运算的一些知识,另外主要学习了c语言中的语句以及输入和输出。
一、赋值运算的注意点
首先是不同精度数据间的混合赋值,低精度数据赋值给高精度数据没有影响,但高精度数据给低精度数据赋值会导致精度丢失。
当不同长度间的数据混合赋值时,长类型的赋值给段类型会导致高位截断,当短类型赋值给长类型时要分两种情况,一是短类型时有符号型,这时其赋值给长类型时就会导致高位符号位扩展,而无符号的段类型赋值给长类型,高位会自动补0。
二、语句
语句的具体内容如下:
三、输入与输出
注意,c语言并不提供输入输出功能,因为从输入与输出的概念来说,输入与输出都是以计算机主机为主题而言的,从计算机向外部输出设备(显示器,打印机等)输出数据叫做输出,从输入设备(鼠标键盘等),向计算机输入数据叫做输入。所以输入与输出的过程都涉及到了硬件设备,而硬件设备是各种各样无法统一的,这就造成了如果c语言有自己的输入输出功能,就会变得很复杂。
因此,c语言的输入输出主要由标准输入输出函数库来完成的,其主要包含三组函数:一是单个字符的输入输出,getchar,putchar;二是格式化输入输出:scanf与printf,三是字符串的输入与输出(暂时不做了解):gets与puts
1.getchar与putchar
getchar 的功能是获取一个字符,其参数是空,返回值是int型,
putchar的功能是数出一个字符,其参数为int型,即为要输出字符的ascii码,返回值也是int型,返回成功就会返回要输出字符的ascii码。
2.printf与scanf
2.1printf
printf是格式化输出函数,其使用时的基本格式是:printf(“格式化控制字符串”,输出列表),在格式化控制字符串中如果是普通字符,则原样输出,如果是占位符,将输出列表中对应的参数,以占位符指定的格式输出;常见的占位符如下:
//整型
%d 以 有符号 十进制 格式 输出
%u 以 无符号 十进制 格式 输出
%x 以 十六进制 格式 输出
%X 以 十六进制 格式 输出 ,但是对应的a b c d e f 都是大写
%o 以 八进制 格式 输出
//浮点数
%f 以小数的形式输出,默认保留6位小数
%g 以 更简洁 的方式输出 ,同时不会输出多余的0
%e 以 科学计数法形式 输出
%E 输出结果中 e 大写
//字符
%c 以 字符的 格式 输出 //将对应的ASCII码值的 字符形式输出
%s 以 字符串 格式 输出
注意:如果占位符大于输出列表的参数,则从左到右多的就会随机输出一个数。
另外还有辅助控制符:如%【辅助控制符】d
主要是#,如%#x,表示输出十六进制的前缀
%#0,表示输出八进制的前缀
另外就是在%后跟m.n,其中m可以设置输出的宽度,n一般控制浮点数的小数位数。
2.2scanf
scanf表示格式控制输入,其一般使用的格式为:scanf(“格式控制输入字符串”,地址列表)
同样的与printf相似,格式控制输入字符串也有普通字符,但有普通字符时,输入的时候就也要输入该字符,另外就是占位符,其作用是占了一个位置,将输入的数据,转换位占位符指定的格式,放到地址列表对应的一块内存空间上。 常见占位符如上。
注意:1.地址列表一定要记得&符号。2.当有多个数据输入时,以空白符(空格,Tab,回车)为分割,3.另外要注意输入数据类型的匹配:如%d对应int型,%lf对应double型,%ld对应long型,%lld对应long long型。4.也可以加上辅助控制符如%md来限制 输入的宽度,达到宽度则输入匹配结束。5.输入匹配结束的条件:空白符,限制的宽度,还有非法字符(输入非要求输入的数据类型)6.要尤其注意输入占位符为%c时我们要注意键盘上几乎所有的键都能被%c识别,这个时候我们为了输入方便可以加入%*c来跳过一个数据匹配项,亦或是在输入间隔中加入getchar来吸收一个字符。
最后要注意的是从键盘输入数据然后再到程序这个过程:就比如当一个scanf输入多个数据时,首先键盘输入的数据会进入一个输入缓冲区,然后输入结束后输入的这些数据才会从左到右对scanf中的格式输入控制字符串进行挨个匹配。