===============================C语言输入及输出============================
输入:scanf()
输出:printf();
printf:
#include <stdio.h>
int printf(const char *format, ...); //变参函数返回值:成功打印个数
const char *format:封装成的字符,这些字符将显示在屏幕上
int number = 100;
printf("number = %d\n",number);
%d:数据格式
注:每个对应的变量,它输出类型有所不同
《一》C语言常用的数据格式
%c : 字符类型
%d : 整型
%s : 字符串类型
%u : 无符号类型
%hu : 无符号短整型类型
%hd : 短整型 short
%ld : 长整型
%f : 浮点型 float
%lf : 长浮点型 double
%e : 科学计数型
%o : 打印八进制
%x :打印十六进制
%p : 打印变量指针地址
可在打印进制时加入#,将进制符号打印出来
%#o (八进制) %#x(十六进制)
0457 0x457
八进制变量定义:
int var_8 = 0457; //系统会认为这个是一个八进制数 数据前面加0
printf("var_8 = %o\n",var_8);
十六进制变量定义:
int var_16 = 0x457; //系统会认为这个是一个八进制数 数据前面加0x
printf("var_16 = %o\n",var_16);
scanf用法:
#include <stdio.h>
int scanf(const char *format, ...);
返回值:const char *format匹配的个数
const char *format:匹配缓冲数据格式
int num = 0;
scanf("%d",&num); &num...:变量地址
scanf使用建议:
(1)不要在const char *format参数内添加\n
(2)不在const char *format参数内添加相关的符号或者是字符
(3)数据类型格式要与变量类型一致
(4)数据类型格式与变量取地址个数要相同
例子:
int i = 0;
char j = 0;
char k = 0;
scanf("%d%c%c",&i,&j,&k);
===================scanf输入处理及类型转换细节=================================
定义 :
1、scanf输入时,键盘按enter,将\r\n同字符一同放入缓冲区
2、整型、浮点型及字符串匹配数据格式时,会将\r一同带走处理,留下\n
3、对应整型、浮点型及字符串来讲,若缓冲区有\n,不会匹配其字符
4、对应\n来说,数据格式%c认为一个字符
问题一:如何解决%c不匹配上个输入时留下的\n ??
解决方法,清空缓冲区:代码: while( getchar() != '\n'); //清空缓冲区
ch = getchar():获取缓冲区中的一个字符
1. 数据类型转换:
模型: 变量 = (转换的类型)
转换的类型:char short int long long long struct 指针(int * ... struct *)
2. 合法的类型转,数据类型由低类型转换为高数据类型
char --> short -->int -->long -->long long
如:char ch_number = 100;
int int_number = 0;
int_number = ch_number;==>编译是这样认为 int_number = (int)ch_number;
3.不合法的类型转,数据类型由高类型转换为低数据类型
long long -->long -->int -->short -->char
如:unsigned char ch_number = 100;
unsigned int int_number = 657;
ch_number = int_number; ==>编译是这样认为 ch_number = (unsigned char)int_number;
解:将int_number化为二进制:10 1001 0001
再根据ch_number位来取int_number二进制位(取低八位)1001 0001
硬件编程当中常使用:
unsigned int * GPIO_REG = (unsigned int *)0x254D1245
GPIO_REG = 100;
纯软件编程当中常使用:(不合法)
unsigned int * GPIO_REG = (unsigned int *)0x254D1245
GPIO_REG = 100;
C语言输入及输出以及及scanf输入处理及类型转换
最新推荐文章于 2024-09-15 04:17:06 发布