嵌入式第14步——自定义变量和常量参数汇总(定义、输入、输出)
2022/5/2 23:48:37
本文主要是介绍嵌入式第14步——自定义变量和常量参数汇总(定义、输入、输出),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
计算机语言里可以自定义变量和常量,这样在每次用到这个量的时候,可以直接输入。自定义常量名可以减少录入过程中的错误,减少录入工作量。自定义变量名,可以做到在任何想要使用的部位引用。
在C语言里,变量名可以用英文字母、数字、下划线组成。一般习惯用变量名的英文,单词较多时用下划线隔开,有罗列时用数字区分。变量名开头不能用数字,可以用字母或下划线。变量名区分大小写,传统习惯变量用小写,常量用大写。
变量名和常量名要避开编程语言内部已经定义的名称,又称关键字。在ANSI C里定义了32个关键字,C99标准定义了5个关键字,C11标准定义了7个关键字,一共44个关键字是不能使用作为变量名的。列表如下:
ANSI C标准:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
C99标准:inline restrict _bool _Complex _Imaginary
C11标准:_Alignas _Alignof _Atonic _static_assert _Noreturn _Thread_local _Generic
C语言可用的数据类型包括:
char 字符型数据 占用一个字节8位,在定义常量时可以定义符号用,也可以用于表示-128~127之间数值
unsigned char 无符号字符型数据 占位8位,在定义常量时可以定义符号用,也可以用于表示0~255
int 整形 占32位,用于表示-2147483648~2147483747之间数值
shout 短整型 占位16位,用于表示-32768~32768之间数值
unsigned short 无符号短整型 占位16位,用于表示0~65535之间数值
unsigned int 无符号整型 占位32位,用于表示0~4294967295之间数值
long 长整型 占位32位,用于表示-2147483648~2147483747之间数值
unsigned long int 占位32位,用于表示0~4294967295之间数值
float 单精度浮点型 在<float.h>库里
double 双精度浮点型 在<float.h>库里
声明变量:
int a;
char b;
float c;
double d;
int a=520;
char b=’F’;
格式化输出函数及格式声明
标准输出函数:
#include<stdio.h>
int printf(“ 输出内容及函数格式声明 “,函数列表);
1、%d 有符号十进制整型数据输出(正数不输出符号),对应int型数据
例: printf(“a=%d,b=%d\n”a,b); 运行结果:a=3,b=4
1.1 %md m为输出宽度,实际位数小于m时,从左侧补充空格。不指定时,按照实际位数输出。具体用法见%x的说明及后面例子。
1.2 %ld ld为输出长整型整数,占4个字节。在VC++6.0里,int和long都是分配4个字节,故可以用%d直接输出。
2、%u 无符号十进制整形数据输出(正数不输出符号),对应unsigned型数据
3、%o 以八进制无符号形式输出整数(不输出前导符o)
例1:
short int a=-1
printf(“%d,%o”,a,a);
运行结果: -1,177777
4、%x %X 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出。用X时,则以大写字母输出。
例1:
short int a=-1
printf(“%x,%o,%d”,a,a,a);
运行结果: ffff,177777,-1
例2:
unsigned short a=65535;
short int b=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“b=%d,%o,%x,%u\n”,b,b,b,b);
运行结果:
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
例3:
int a=65535;
int b=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“b=%d,%o,%x,%u\n”,b,b,b,b);
运行结果:
a=65535,177777,ffff,65535
b=-2,37777777776,fffffffe,4294967294
例4:(注意%#的输出区别) 网上抄录来的,不见得运行成功。
int a=100
printf(“a=%d,a=%o,a=%x,a=%#0x”,a,a,a);
运行结果:
a=100,a=144,a=64,a=ox64
5、%c 输出一个字符。
5.1 %mc m用于指定输出字符宽度,不足部分在左侧用空格补充。
例1: char ch=’a’;
printf(“%c,cha=%3c”,c,c); 运行结果: a cha= a
6、%s 输出一个字符串
6.1 %ms 输出一个指定宽度的字符串,超出m部分全部显示,不足部分左侧用空格补充。
6.2 %-ms 如果串长小于m,则在m列范围内,字符串向左靠,右侧补空格。
6.3 %m.ns 输出占m个字符,取字符串左端n个字符,输出在m列右侧,在左侧补充空格。
6.4 %-m.ns输出占m个字符,取字符串左端n个字符,输出在m列左侧,在右侧补充空格。
规律总结:用带数字表示格式时,小数点前为输出时占位数,小数点后为显示的数字数,不带符号(或称+)时,往右放,左边加空格不足。带负号时,往左放,右边加空格补足。
例1、 char c=‘china’;
printf(“c=%s c=%3s c=%8s c=%7.2s, c=%.4s,c=%5.3s,c=%-8s,c=%-5.3。),c,c,,c,c,c,c,c,c);
运行结果:
c=china, c=china, c= china,c= ch,c=chin,c=chi ,c= chi,c= china,c=chi 。
7、%f 输出实数,包括单双精度实数。系统一般情况下处理方法:实数中整数部分全部输出,小数部分输出6位。但由于双精度实数有效位数为15~16位,故用%f输出时,整数加小数部分长度有可能超出可以输出的位数,故只输出全部整数和部分小数。
7.1 %m.nf:指定输出的实数共占m列,其中小数可以显示n位。整个数据往右放,在左侧加空格。
7.2 %-m.nf: 指定输出的实数共占m列,其中小数可以显示n位。整个数据往左放,在右侧加空格。
例1:
float f=123.456;
printf(“f=%f, f=%10f, f=%10.2f, f=%.2f, f=%-10.2f。”,f,f,f,f,f);
运行结果:
f=123.456, f=123.456 ,f= 123.45, f=123.45, f=123.45 。
8、%e %E 以指数形式输出实数,用e时指数以e表示(如1.2e+002),用E时指数以E表示(如1.2E+002)多数C系统中,指数默认占3位。
8.1 %m.ne, %-m.ne: m指定输出数占m列,n指定小数部分位数,不带符号(或称+)时,往右放,左边加空格补足。带负号时,往左放,右边加空格补足。不指定n时,默认n=6
例: float f=123.456
printf(“f=%e,f=%10e,f=%10.2e,f=%.2e,f=%-10.2e。”,f,f,f,f,f);
运行结果:
f=1.23456e+002,f=1.23456e+002,f= 1.23e+002,f=1.23e+002,f=1.23e+002 。
9、%g %G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0,用G时,若以指数形式输出,则指数以大写表示。用的比较少。
例: f=123.456
printf(“f=%f,,f=%e,f=%g。”,f,f,f);
运行结果:
f=123.456 ,f=1.23456e+002,f=123.456 。
格式输入函数及格式声明:
标准输入函数:
#inculude<stdio.h>
………
int scanf(const char *format,……)//*format为格式字符,后面…为读入值赋予的参数。
1、 读取数据时,首先忽略空白字符(包括空格、回车、制表符Tab);
2、 出了格式占位符(%开头)外的非空白字符:指定函数必须从输入里读取到的字符,如果读取不匹配,则调用失败,并从匹配失败处截断输入流;
3、 格式化占位符(%开头):用于指明获取的数据类型及位置。
格式化占位符语法: %(宽度)(长度)格式字符
格式字符内容及含义:
1、%c 读取一个字符。
2、%d 读取一个十进制整数,前面可以加上符号(+或-)表示正负。
3、%i 1)读取一个整数,前面可以加上符号(+或-)表示正负。
2)0开头表示八进制数,0x开头表示十六进制数。
4、%e\E\g\G 读取一个指数形式的单、双精度浮点数。
5、%f\g\G 读取一个单、双精度浮点数(需要使用lf),前面可以加符号(+或-)表示正负。
6、%a 读取一个十六进制的浮点数(以0x或0X开头)。
7、%0 读取一个八进制整数,前面可以加符号(+或-)表示正负。
8、%s 读取一连串字符,直到遇到空白字符结束。
9、%u 读取一个无符号的十进制整数。
10、%x 读取一个无符号的十六进制整数,前面可以加符号(+或-)表示正负。
11、%p 读取一个指针的值。
12、%[字符] 1)匹配中括号括起来的字符集
2)可以用连接符(-)表示范围,比如[0-9]
13、%[^字符] 1)匹配中括号括起来的字符集
2)可以用连接符(-)表示范围,比如[0-9]
14、n 1)存放已经读取的字符个数;
2)不消耗任何标准输入流的字符。
15 % 表示匹配%自身。
注1:除了n,其他的每次读取都会至少消耗标准输入流中的一个字符。
注2:如果读取失败,则标准输入流截断于读取失败的位置。
注3:*[数字]表示本项读入的数据不计入,或者说是空占位。数字表示空位数量。
…参数:
1、 参数的个数由格式化字符决定。
2、 每个参数均为一个存储空间,并于前面格式化字符串中占位符的类型和位置一一对应。
3、 如果这个参数是一个普通变量名,那么需要在变量名前面加上&符号。这意味着这个输入是给这个变量赋值。
返回值:
1、 如果函数调用成功,返回值是成功获取并填充到附加参数中的个数。
2、 如果函数调用失败,返回值小于附加参数的个数(甚至是0)。
3、 如果读取到标准输入的结尾处,则返回值EOF。
例1:(录自小甲鱼函数解析)
#include<stdio.h>
int main()
{
char c;
int I;
int j;
scanf(“%c%d%x”,&c,&I,&j); //注意输入的格式和参数前要加&。
printf(“变量c的值是:%\n”,c);
printf(“变量i的值是:%d\n”,i);
printf(“变量j的值是:%#x(%d)\n”,j,j);
}
运行结果:
输入: A 520 ff
输出:
变量C的值是:A
变量i的值是:520
变量j的值是0XFF(255)
例2:(录自谭浩强《C语言程序设计》第3版)
1) 对于unsigned类型变量所需要的数据,可以用%u、%d或%o、%x格式输入。
2) 可以指定输入数据所占列数(也就是位数),系统会自动按它截取所需数据。
scanf(“%3d%3d”,&a,&b);
运行输入:123456
则系统将123赋值给变量a,456赋值给变量b.这个方法也可以用于字符型:
scanf(“%3c”,&ch);
运行输入:abc
结果:由于c为获取单个字符,则不论前面数字是多少,只取第一个字符a作为参数ch的值。
3)如果%后有一个*,怎表示跳过它指定的列数。
scanf(“%2d%*3d%2d”,&a,&b);
运行输入:12 345 67
结果:系统将12赋值给参数a,然后根据%*3d要求读入但不赋值3个输入参数,也就是说345被读入,却不赋值,然后将后面的67赋值给参数b。这个赋值方式,很多时候被用于在利用现有的一批数据时,跳过里面不需要的一段数据进行赋值。
4)赋值过程中,不能规定精度,比如:
scanf(“&7.2f“,&a);
这个语句是不合法的,不能企图改变输入值进行赋值。比如输入1234567,企图使赋值为12345.67,这是不会实现的。
这篇关于嵌入式第14步——自定义变量和常量参数汇总(定义、输入、输出)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞