03-输入输出 数据类型

1、第一个程序:hello world

创建项目–空项目(名称、目录)–工程
在这里插入图片描述
在这里插入图片描述

源文件–v++(hello.c)–敲代码
在这里插入图片描述
在这里插入图片描述
代码展示:

#include <stdio.h> //包含头文件 input  output
#include <stdint.h>

//编程规范  
//注释 源文件

//入口代码
int main(int argc, char* argv[]) {
	print("hello world\n");// \n是转义字符 换行的意思
	return 0;
}

代码效果图:

在这里插入图片描述

2、数据类型

2.1 变量

2.1.1 变量

在程序运行过程中,其值可以改变
变量在使用前必须先定义,定义变量前必须有相应的数据类型

2.1.2 标识符命名规则:

标识符不能是关键字
标识符只能由字母、数字、下划线组成
第一个字符必须为字母或下划线
标识符中字母区分大小写

2.1.3 变量特点:

变量在编译时为其分配相应的内存空间
可以通过其名字和地址访问相应内存

2.1.4.匈牙利命名法

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。

变量属性:

属性部分:
g_ 全局变量
c_  常量
m_  c++类成员变量
s_  静态变量

类型部分:
数组 a
指针 p
函数 fn
无效 v
句柄 h
长整型 l
布尔 b
浮点型(有时也指文件) f
双字  dw
字符串  sz
短整型  n
双精度浮点 d
计数 c(通常用cnt)
字符 ch(通常用c)
整型 i(通常用n)
字节 by
字 w
实型 r
无符号 u

描述部分:
最大 Max
最小 Min
初始化 Init
临时变量 T(或Temp)
源对象 Src
目的对象 Dest

举例
hwnd : h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;
pfnEatApple : pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示指向 EatApple 函数的函数指针变量。
g_cch : g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类型,这里忽略了对象描述,所以它表示一个对字符进行计数的全局变量。

2.2数据类型

数据类型占用空间数据范围
char字符型1字节-128 ~ 127
short/short int短整型2字节-32768 ~ 32767
int整型4字节-2147483648 2147483647
long/long int整型4字节-2147483648 2147483647
long long/long long int长整型8字节-2^64/2 ~ 2^64/2-1
unsigned char无符号字符型1字节0 ~ 255
unsigned short/short int无符号字符型2字节0 ~ 65536
unsigned int整型4字节0 ~ 4294967296
unsigned long/long int整型4字节0 ~ 4294967296
unsigned long long/long long int长整型8字节0 ~ 2^64-1
float单精度浮点型4字节
double双精度浮点型8字节

3.输入 输出函数

3.1格式规范语法: printfscanf 函数

printf 格式化输出数据到标准输出设备

scanf 从标准输入设备格式化输入数据到变量

#include <stdio.h>

int main()
{
	int b;

	printf("请输入b的值:");
	scanf("%d", &b);
	printf("b = %d\n", b);

	return 0;
}

3.2类型字段字符

类型字符参数输出格式
c字符printf 函数一起使用时,指定单字节字符;与 wprintf 函数一起使用时,指定宽字符。
C字符printf 函数一起使用时,指定宽字符;与 wprintf 函数一起使用时,指定单字节字符。
dInteger带符号十进制整数。
iInteger带符号十进制整数。
oInteger无符号八进制整数。
uInteger无符号十进制整数。
xInteger无符号十六进制整数;使用 " abcdef "。
XInteger无符号十六进制整数;使用 " ABCDEF "。
e浮点格式为 [-] e± [ ]的有签名值,其中 是一个十进制数字,是一个或多个十进制数字,具体取决于指定的精度,或者默认为六位 d.ddddd.dddddddddddddd ,[ d ]*dd*是两个或三个十进制数字,具体取决于输出格式和指数的大小。
E浮点与 格式 e 相同,只不过 E 而不是 e 引入了指数。
f浮点格式为 [-] .的有签名值 dddddddddddddddd 其中 是一个或多个十进制数字。 小数点前的数字位数取决于数字的度量值,小数点后的数字位数取决于请求的精度,或为默认的六位数。
F浮点与 格式相同 f ,只不过无穷大和 nan 输出大写。
g浮点有签名值以 fe 格式显示,以更精简的给定值和精度为准。 只有当值的指数小于 -4 或大于或等于精度参数时,才 e 使用 e 。 截去尾随零,仅当后跟一个或多个数字时,才会显示小数点。
G浮点与 格式 g 相同,只不过 在适用位置引入指数 E****e (() )。
a浮点采用*[-]0xh.hhhh*格式的有签名十六进制双精度浮点值,其中 h.hhhh是十六进制数字 (使用小写字母) 作为指数的一个或多个数字。 精度指定此点后的数字位数。
A浮点采用*[-]0Xh.hhhh格式的有签名十六进制双精度浮点值,其中 h.hhhh是十六进制数字 (使用大写字母) 表示指数,dd*是指数的一个或多个数字。 精度指定此点后的数字位数。
n指向整数的指针目前成功写入流或缓冲区的字符数。 此值存储在地址作为自变量的整数中。 可通过参数大小规范前缀控制指向的整数的大小。 n 说明符默认为禁用;请参阅重要的安全说明了解相关信息。
p指针类型以十六进制数字显示参数作为地址。
sStringprintf 函数一起使用时,指定单字节或多字节字符串;与 wprintf 函数一起使用时,指定宽字符字符串。 将于第一个空字符之前或达到精度值时显示字符。
SStringprintf 函数一起使用时,指定宽字符字符串;与 wprintf 函数一起使用时,指定单字节或多字节字符串。 将于第一个空字符之前或达到精度值时显示字符。
ZANSI_STRINGUNICODE_STRING 结构将 或 结构的地址作为参数传递时,显示结构字段指向的缓冲区 Buffer 中包含的字符串。 使用 大小 修饰符前缀 来指定 UNICODE_STRING 例如的参数 —%wZ 。 结构的 Length 字段必须设置为字符串的长度(以字节为单位)。 结构的 MaximumLength 字段必须设置为缓冲区的长度(以字节为单位)。 通常, Z 只能在使用转换规范的驱动程序调试函数(如和)中使用类型字符 dbgPrint``kdPrint

3.3标志字符

标志含义默认
-在给定的字段宽度内左对齐结果。右对齐。
+如果输出值为有符号类型,请使用符号 (+ 或-) 为其加上前缀。只对有符号的负值 (-) 显示符号。
0如果 width 的前缀为 ,则将添加前导零,直到达到最小宽度。 如果 0 和都 - 出现, 0 则忽略。 如果 0 为整数格式指定了, (、、、、 iuxXod) 和精度规范也存在,则 —%04.d0 将忽略。 如果 0a 或浮点格式指定了,则在 A 或前缀之后为尾数预置前导零 0x``0X不填充。
空白 ( “” )如果输出值已签名且为正值,则使用空值作为其前缀。 如果空白和 + 标志同时出现,空白则将被忽略。没有显示空白。
#当它与 o 、或格式一起使用时 x****X ,标志将 # 分别使用 00x0X ,以作为任何非零输出值的前缀。不显示前缀。
当它与 eE 、、、或格式一起使用时 fFa****A ,标志将 # 强制输出值包含小数点。仅当小数点后紧跟数字时,才会显示小数点。
当它与或格式一起使用时 g****G# 标志将强制输出值包含小数点,并防止截断尾随零。 与 c 、、 d****iu 或一起使用时,将被忽略 s仅当小数点后紧跟数字时,才会显示小数点。 尾随零将被截断。

3.4精度值如何影响类型

类型含义默认
a, A精度指定此点后的数字位数。默认精度为 13。 如果精度为 0,除非使用 # 标志,否则不会打印小数点。
c, C精度不产生任何影响。打印字符。
d, i, o, u, x, X精度指定要打印的最小数字位数。 如果参数中的数字位数小于精度,则将在输出值的左侧使用零进行填充。 当位数超过 精度时,该值不会被截断。默认精度为 1。
e, E精度指定此小数点后要打印的数字位数。 打印的最后一位数舍入。默认精度为 6。 如果 精度 为0,或者该时间段 () 出现时不包含数字,则不会打印小数点。
f, F精度值指定此小数点后的数字位数。 如果出现小数点,则在它之前至少会显示一个数字。 该值舍入为适当数量的数字。默认精度为 6。 如果 精度 为0,或者如果句点 () 出现时没有数字,则不会打印小数点。
g, G精度指定打印的最大有效位数。打印六个有效位数,并且任何尾随零都会被截断。
s, S精度指定要打印的最大字符数。 不会打印超过精度的字符。输出字符,直到找到空字符。

3.5printf 和 wprintf 格式类型说明符的大小前缀

若要指定使用前缀及类型说明符备注
char unsigned charhhdiouxX
short int short unsigned inthdiouxX
__int32 unsigned __int32I32diouxX非标函数
__int64 unsigned __int64I64diouxX非标函数
intmax_t uintmax_tjI64diouxX非标函数
long doublel (小写 L) 或 LaAeEfFgG
long int long unsigned intl(小写 L)diouxX
long long int unsigned long long intll (小写的 LL)diouxX
ptrdiff_ttI (大写 i)diouxX非标函数
size_tzI (大写 i)diouxX
单字节字符hcC
宽字符l (小写 L) 或 wcC
单字节字符串hsSZ
宽字符字符串l (小写 L) 或 wsSZ

ptrdiff_tsize_t 类型在 32 位平台上为 __int32unsigned __int32,在 64 位平台上为 __int64unsigned __int64I (大写 i) 、、 j****tz 大小前缀采用平台的正确参数宽度。

在 Visual C++ 中,虽然 long double 是互异的类型,但是它具有与 double 相同的内部表示形式。

**hc**或 hC 类型说明符与 c 函数中的 printf 和函数中的 C 同义 wprintflclCwc 或类型说明符与函数中的 wC****Cprintf 和函数的同义词 cwprintf 。 **hs**或 hS 类型说明符与 s 函数中的 printf 和函数中的 S 同义 wprintflslSws 或类型说明符与函数中的 wS****Sprintf 和函数的同义词 swprintf

备注

特定于 Microsoft 的:
I (大写 i) ,, I32I64w 参数大小修饰符前缀是 Microsoft 扩展,不与 ISO C 兼容。 当与类型的数据一起使用时, h 前缀为类型的数据,而与类型的数据一起使用时,则使用前缀 char " l (小写") 前缀 double

3.6代码示例

//使用scanf和printf编写程序按以下格式输入保存到变量并且显示(在代码下面用注释写上格式的作用)
	//1.cC
	//c	字符	与 printf 函数一起使用时,指定单字节字符;与 wprintf 函数一起使用时,指定宽字符。
	//c	字符。 与 scanf 函数结合使用时,指定单字节字符;与 wscanf 函数结合使用时,指定宽字符。 
	char ch = 0;
	printf("Please Input character:");
	scanf_s("%c", &ch,1);
	printf("ch = %c\n", ch);

	//C	字符	与 printf 函数一起使用时,指定宽字符;与 wprintf 函数一起使用时,指定单字节字符。
	//C	相反大小字符。 与 scanf 函数结合使用时,指定宽字符;与 wscanf 函数结合使用时,指定单字节字符。 
	wchar_t wc=0;
	printf("Please Input character:");
	scanf("%C", &wc);
	printf("wc = %C\n", wc);
	
	//	2.d
	//d	Integer	带符号十进制整数。
	int nNumber = 0;
	printf("Please Input Number:");
	scanf_s("%d", &nNumber);//输入带符号十进制整数
	printf("nNumber = %d\n", nNumber);//输出带符号十进制整数

	//	3.i
	//scanf->i { 1 }一个整数。{ 2 } 如果输入字符串以“0x”或“0X”开始,则为十六进制;
		//如果字符串以“0”开始,则为八进制;其余情况为十进制。
	//printf-> i	Integer	带符号十进制整数。
	int nNumber3 = 0;
	printf("Please Input Number:");
	scanf_s("%i", &nNumber3);
	printf("nNumber3 = %i\n", nNumber3);

	//	4.o
	//scanf->o	八进制整数。
	//printf->o	无符号八进制整数。
	int nNumber4 = 0;
	printf("Please Input Number:");
	scanf_s("%o", &nNumber4);//输入八进制整数
	printf("八进制nNumber4 = 0%o\n", nNumber4);//输出无符号八进制整数

	//	5.u
	//u	Integer	无符号十进制整数。
	int nNumber5 = 0;
	printf("Please Input Number:");
	scanf_s("%u", &nNumber5);//输入无符号十进制整数
	printf("无符号十进制整数nNumber5 = %u\n", nNumber5);//输出无符号十进制整数

	//	6.xX
	//x	十六进制整数。	指向 int的指针。
	//printf-> x	无符号十六进制整数; 使用 " abcdef "。
	//printf-> X    无符号十六进制整数; 使用 " ABCDEF "。
	int nNumber6 = 0;
	printf("请输入十六进制整数:");
	scanf_s("%x", &nNumber6);//输入带符号十六进制整数
	printf("nNumber6 = %x\n", nNumber6);//输出无符号十六进制整数; 使用 " abcdef "。

	int nNumber6_2 = 0;
	printf("请输入十六进制整数:");
	scanf_s("%X", &nNumber6_2);//输入十六进制整数
	printf("nNumber6_2 = %X\n", nNumber6_2);//输出无符号十六进制整数; 使用 " ABCDEF "。

	//	7.eE
	//e 格式为 [-] e± [ ]的有签名值,其中 是一个十进制数字,是一个或多个十进制数字,具体取决于指定的精度,
	//或者默认为六位 d.ddddd.dddddddddddddd ,
	//[ d ]dd是两个或三个十进制数字,具体取决于输出格式和指数的大小。
	float nNumber7_1 = 0;
	printf("请输入浮点数:");
	scanf_s("%e", &nNumber7_1);//输入浮点数
	printf("nNumber7_1 = %e\n", nNumber7_1);//输出的浮点型为科学记数法
	
	//E 同上e,格式为 [-] E± [ ]的有签名值
	float nNumber7_2 = 0;
	printf("请输入浮点数:");
	scanf_s("%E", &nNumber7_2);//输入浮点数
	printf("nNumber7_2 = %E\n", nNumber7_2);//输出的浮点型为科学记数法

	//	8.fF
	//f	浮点	格式为 [-] .的有签名值 dddddddddddd , dddd 其中 是一个或多个十进制数字。 
	//小数点前的数字位数取决于数字的度量值,小数点后的数字位数取决于请求的精度,或为默认的六位数。
	float nNumber8_1 = 0;
	printf("请输入浮点数:");
	scanf_s("%f", &nNumber8_1);//输入浮点数
	printf("nNumber8_1 = %f\n", nNumber8_1);//

	//F	浮点	与 格式相同 f 
	float nNumber8_2 = 0;
	printf("请输入浮点数:");
	scanf_s("%F", &nNumber8_2);//输入浮点数
	printf("nNumber8_2 = %F\n", nNumber8_2);//
	 
	//	9.gG
	//g	浮点	有签名值以 f 或 e 格式显示,以更精简的给定值和精度为准。 
	// 只有当值的指数小于 -4 或大于或等于精度参数时,才 e 使用 e 。 
	// 截去尾随零,仅当后跟一个或多个数字时,才会显示小数点。
	float nNumber9_1 = 0;
	printf("请输入浮点数:");
	scanf_s("%g", &nNumber9_1);//输入浮点数
	printf("nNumber9_1 = %g\n", nNumber9_1);//根据数的进度大小输出科学计数法或者普通计数法

	float nNumber9_2 = 0;
	printf("请输入浮点数:");
	scanf_s("%G", &nNumber9_2);//输入浮点数
	printf("nNumber9_2 = %G\n", nNumber9_2);//根据数的进度大小输出科学计数法(E表示)或者普通计数法


	//	10.aA
	//a	浮点	采用[-]0xh.hhhhp±格式的有签名十六进制双精度浮点值,
	// 其中 h.hhhh是十六进制数字(使用小写字母) 作为指数的一个或多个数字。 精度指定此点后的数字位数。
	float nNumber10_1 = 0;
	printf("请输入浮点数:");
	scanf_s("%a", &nNumber10_1);//输入浮点数
	printf("nNumber10_1 = %a\n", nNumber10_1);//采用[-]0xh.hhhh p±格式输出

	//A	浮点	采用[-]0Xh.hhhhP±格式的有签名十六进制双精度浮点值,其中 h.hhhh是十六进制数字 (使用大写字母) 表示指数,
	//dd是指数的一个或多个数字。 精度指定此点后的数字位数。
	float nNumber10_2 = 0;
	printf("请输入浮点数:");
	scanf_s("%A", &nNumber10_2);//输入浮点数
	printf("nNumber10_2 = %A\n", nNumber10_2);//采用[-]0xh.hhhh P±格式输出

	//	11.n
	//printf -> n	目前成功写入流或缓冲区的字符数。
	//scanf ->  n	未从流或缓冲区读取任何输入
	int val;
	val = _set_printf_count_output(1);
	printf("hello %n world\n", &val);//printf目前成功写入流或缓冲区的字符数 val=6
	printf("val = %d\n", val);

	int k;
	scanf_s("%d%n",&k, &val);//val= (输入的整数k的位数)
	printf("%d\n", val);

	//	12.p
	//p 以十六进制数字显示参数作为地址
	int nNumber12 = 0;
	printf("请输入一个数:");
	scanf_s("%d", &nNumber12);
	printf("nNumber12 = %p", nNumber12);//以十六进制输出

	//	13.sS
	//s	String	与 printf 函数一起使用时,指定单字节或多字节字符串;与 wprintf 函数一起使用时,指定宽字符字符串。
	//S	String	与 printf 函数一起使用时,指定宽字符字符串;与 wprintf 函数一起使用时,指定单字节或多字节字符串。
	char str[255];
	printf("请输入字符串:");
	scanf("%s", str);
	printf("str	= %s\n", str);

	char str1[128];
	printf("请输入字符串:");
	wscanf(L"%S", str1);
	wprintf(L"str	= %S\n", str1);

	//	14.Z
	// Z	ANSI_STRING 或 UNICODE_STRING 结构	将 或 结构的地址作为参数传递时,显示结构字段指向的缓冲区 		 //ANSI_STRINGUNICODE_STRINGBuffer 中包含的字符串。 使用 大小 修饰符前缀 来指定 UNICODE_STRING 例如的参数 —%wZ 。
//结构的 Length 字段必须设置为字符串的长度(以字节为单位)。 
	// 结构的 MaximumLength 字段必须设置为缓冲区的长度(以字节为单位)。
	//不会用

	//	15. -
	//-	在给定的字段宽度内左对齐结果。
	char str15[222] = "ABCDEF";
	printf("请输入一个字符串:");
	scanf_s("%s", str15);
	printf("%-10s\n", str15);
		
	//	16. +
	//+ 如果输出值为有符号类型,请使用符号(+或 - ) 为其加上前缀。
	char str16[222] = "ABCDEF";
	printf("请输入一个字符串:");
	scanf_s("%s", str16);
	printf("%+20s\n", str16);


	//	17.0
	// 0:有0表示指定空位填0,如省略表示指定空位不填。
	int nNumber17=0;
	printf("请输入一个数字:");
	scanf_s("%d", &nNumber17);
	printf("nNumber17 = %010d\n", nNumber17);

	//	18.#
	//当它与 o 、或格式一起使用时 xX ,标志将 # 分别使用 0 、 0x 或 0X ,以作为任何非零输出值的前缀。
	int nNumber17 = 0;
	printf("请输入一个数字:");
	scanf_s("%d", &nNumber17);
	printf("nNumber17 = %#8d\n", nNumber17);
	printf("nNumber17 = %#8o\n", nNumber17);
	printf("nNumber17 = %#8x\n", nNumber17);	

	//	20.hh
	//hh 读取一个字节的数据,长了就会截断,舍弃高位
	// char 的范围是 -127 - 0 -128
	char ch20;
	printf("请输入一个字符:");
	scanf_s("%hhd", &ch20);
	printf("ch20 = %hhd ", ch20);


	//	21.h
	//h 读取2个字节的数据,长了就会截断,舍弃高位
	//short 的范围是 -32768 - 0 - 32767
	short nNumber21 = 0;
	printf("请输入一个数字:");
	scanf_s("%hd", &nNumber21);
	printf("nNumber21 = %hhd ", nNumber21);


	//	22.I32
	//I32 读取4个字节的数据,长了就会截断,舍弃高位
	//int 的范围是 -2147483648 - 0 - 2147483647
	int nNumber22 = 0;
	printf("请输入一个数字:");
	scanf_s("%I32d", &nNumber22);
	printf("nNumber22 = %I32d \n", nNumber22);
	printf("nNumber22 = %I32x \n", nNumber22);

	//	23.I64
	//I64 读取8个字节的数据,长了就会截断,舍弃高位
	//long long 的范围是 -9223372036854775808 -0 - 9223372036854775807
	char num[256] = { NULL };
	printf("请输入一个数字:");
	scanf_s("%llx", num);
	printf("nNumber23 = %I64d\n", num);
	printf("nNumber23 = %I64x\n", num);

	//	24.j
	//j 读取8个字节的数据,长了就会截断,舍弃高位
	//的范围是 -9223372036854775808 -0 - 9223372036854775807
	long long int nNumber24 = 9223372036854775809;
	printf("请输入一个数字:");
	scanf_s("%jd", &nNumber24);
	printf("nNumber24 = %jd\n", nNumber24);
	printf("nNumber24 = %jx\n", nNumber24);

	//	25.l(小写的 L)或 L
	//long double l (小写 L) 或 L + a、A、e、E、f、F、g 或 G
	long double nNumber25 = 0;
	printf("请输入一个数字:");
	scanf_s("%le", &nNumber25);
	printf("nNumber25 = %le\n", nNumber25);
	printf("nNumber25 = %lg\n", nNumber25);

	//	26.ll(小写的 LL)
	long long int nNumber26 = 0;
	printf("请输入一个数字:");
	scanf("%lld", &nNumber26);
	printf("nNumber26 = %lld\n", nNumber26);
	printf("nNumber26 = %llx\n", nNumber26);

	//	27.t 或 I(大写的 i)
	//typedef int              ptrdiff_t
	//ptrdiff_t 的范围是 -2147483648 - 0 - 2147483647
	ptrdiff_t nNumber27 = 0;
	printf("请输入一个数字:");
	scanf("%td", &nNumber27);
	printf("nNumber27 = %td\n", nNumber27);
	printf("nNumber27 = %tx\n", nNumber27);
	printf("nNumber27 = %id\n", nNumber27);
	printf("nNumber27 = %ix\n", nNumber27);
	printf("nNumber27 = %Id\n", nNumber27);
	printf("nNumber27 = %Ix\n", nNumber27);


	//	28.z 或 I(大写的 i)
	//typedef unsigned int     size_t;
	//size_t 0- 4294967295
	size_t nNumber28 = 0;
	printf("请输入一个数字:");
	scanf("%tu", &nNumber28);
	printf("nNumber28 = %tu\n", nNumber28);
	printf("nNumber28 = %tu\n", nNumber28);
	printf("nNumber28 = %Iu\n", nNumber28);
	printf("nNumber28 = %Iu\n", nNumber28);
	printf("nNumber28 = %iu\n", nNumber28);
	printf("nNumber28 = %iu\n", nNumber28);


	//	29.l(小写的 L)或 w
	//宽字符字符串	l (小写 L) 或 w	s、S 或 Z
	wchar_t ch29[222] = {0};
	printf("请输入一个字符串:");
	wscanf(L"%ls", ch29);
	wprintf(L"ch29 = %ls\n", ch29);

	wchar_t ch29_2[222] = { 0 };
	printf("请输入一个字符串:");
	wscanf(L"%Ls", ch29_2);
	wprintf(L"ch29 = %Ls\n", ch29_2);

	wchar_t ch29_3[222] = { 0 };
	printf("请输入一个字符串:");
	wscanf(L"%ws", ch29_3);
	wprintf(L"ch29 = %ws\n", ch29_3);


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值