当前位置:首页 » 办公资讯 » 怎样用define定义文件宏常量

怎样用define定义文件宏常量

发布时间: 2022-05-23 08:37:36

1. c语言 define 怎么用的

C语言中define的用法(2009-08-17 19:21:11)转载标签: 杂谈
define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。

预处理命令以“#”号开头,如包含命令#include,宏定义命令#define等。一般都放在源文件的前面,它们称为预处理部分。

所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。

宏的定义

在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。

在C或C++语言中,“宏”分为有参数和无参数两种。

无参数宏定义

无参数宏就是不带参数,其定义的一般形式为:

#define 标识符 字符串

“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

例如:

#define PI 3.14

它的作用是指定标识符PI来代替常数3.14。在编写源程序时,所有用到3.14的地方都可用PI代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用3.14去置换所有的宏名PI,然后再进行编译。

宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。

宏定义不是说明或语句(它是预处理指令),在行末不必加分号,如加上分号则连分号也一起置换。

下面举一个无参数宏替代常数的例子:

#define PI 3.14
#include <stdio.h>

int main()
{
float r = 1.0;
float area = PI*r*r;
printf("The area of the circle is %f",area);
return 0;
}

再举一个使用无参数宏替代字符串的例子:

#define M (y*y+3*y)

#include <stdio.h>

int main()
{
int s,y;
printf("input a number: ");
scanf("%d",&y);
s = 3*M + 4*M + 5*M;
printf("s=%d\n",s);
return 0;
}

# define M (y*y+3*y) 定义M表达式(y*y+3*y)。在编写源程序时,所有的(y*y+3*y)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用 (y*y+3*y)表达式去置换所有的宏名M,然后再进行编译。

上例程序中首先进行宏定义,定义M表达式(y*y+3*y),在s= 3*M+4*M+5* M中作了宏调用。在预处理时经宏展开后该语句变为:s=3*(y*y+3*y)+4* (y*y+3*y)+5* (y*y+3*y);但要注意的是,在宏定义中表达式(y*y+3*y)两边的括号不能少。否则会发生错误。

带参数宏定义

C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。

带参数宏定义的一般形式为:

#define 宏名(形参表) 字符串

在字符串中含有各个形参。

带参数宏调用的一般形式为:

宏名(实参表)

例如:

#define M(y) y*y+3*y

....

k=M(5);

....

在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为:

k=5*5+3*5

举一个具体例子:

#define MAX(a,b) (a>b)?a:b

#include <stdio.h>

int main()
{
int x,y,max;
printf("input two numbers: ");
scanf("%d%d",&x,&y);
max = MAX(x,y);
printf("max=%d\n",max);
return 0;

}

上例程序的第一行进行带参数宏定义,用宏名MAX表示条件表达式(a>b)?a:b,形参a,b均出现在条件表达式中。程序第七行max = MAX(x, y)为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max = (x>y)?x:y;用于计算x,y中的大数。

对于带参的宏定义有以下问题需要说明:

1. 带参宏定义中,宏名和形参表之间不能有空格出现。

例如把: #define MAX(a,b) (a>b)?a:b写为: #define MAX (a,b) (a>b)?a:b 将被认为是无参宏定义,宏名MAX代表字符串 (a,b)(a>b)?a:b。

宏展开时,宏调用语句: max = MAX(x,y);将变为: max = (a,b)(a>b)?a:b(x,y);这显然是错误的。

2. 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。

#define SQ(y) (y)*(y)
#include <stdio.h>

int main()
{
int a,sq;
printf("input a number: ");
scanf("%d",&a);
sq=SQ(a+1);
printf("sq=%d\n",sq);
return 0;

}

上例中第一行为宏定义,形参为y。程序第七行宏调用中实参为a+1,是一个表达式,在宏展开时,用a+1代换y,再用(y)*(y) 代换SQ,得到如下语句: sq=(a+1)*(a+1); 这与函数的调用是不同的,函数调用时要把实参表达式的值求出来再赋予形参。而宏代换中对实参表达式不作计算直接地照原样代换。

3. 在宏定义中,字符串内的形参通常要用括号括起来以避免出错。在上例中的宏定义中(y)*(y)表达式的y都用括号括起来,结果是正确的。如果去掉括号,把程序改为以下形式:

#define SQ(y) y*y
#include <stdio.h>

int main()
{
int a,sq;
printf("input a number: ");
scanf("%d",&a);
sq=SQ(a+1);
printf("sq=%d\n",sq);
return 0;
}

运行结果为:input a number:3

sq=7 (我们期望的结果却是16)。

问题在哪里呢? 这是由于代换只作符号代换而不作其它处理而造成的。 宏代换后将得到以下语句: sq=a+1*a+1; 由于a为3故sq的值为7。这显然与题意相违,因此参数两边的括号是不能少的。有时候,即使在参数两边加括号还是不够的,请看下面程序:

#define SQ(y) (y)*(y)
#include <stdio.h>

int main()
{
int a,sq;
printf("input a number: ");
scanf("%d",&a);
sq=160/SQ(a+1);
printf("sq=%d\n",sq);
return 0;

}

本程序与前例相比,只把宏调用语句改为: sq=160/SQ(a+1); 运行本程序如输入值仍为3时,希望结果为10。但实际运行的结果如下:input a number:3sq=160。

为什么会得这样的结果呢?分析宏调用语句,在宏代换之后变为: sq=160/(a+1)*(a+1);a为3时,由于“/”和“*”运算符优先级和结合性相同,则先作160/(3+1)得40,再作40*(3+1)最后得160。为了得到正确答案应在宏定义中的整个字符串外加括号,程序修改如下:

#define SQ(y) ((y)*(y))
#include <stdio.h>

int main()
{
int a,sq;
printf("input a number: ");
scanf("%d",&a);
sq=160/SQ(a+1);
printf("sq=%d\n",sq);
return 0;
}

以上讨论说明,对于宏定义,保险的做法是不仅应在参数两侧加括号,也应在整个字符串外加括号。

4. 带参数的宏和带参函数很相似,但有本质上的不同,把同一表达式用函数处理与用宏处理两者的结果有可能是不同的。

下面举一个例子进行对比:

使用函数:

#include <stdio.h>

int SQ(int);

int main()
{
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
return 0;
}

int SQ(int y)
{
return((y)*(y));
}

使用宏:

#define SQ(y) ((y)*(y))

#include <stdio.h>

int main()
{
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
return 0;
}

在使用函数的例子中函数名为SQ,形参为Y,函数体表达式为((y)*(y))。在使用宏的例子中宏名为SQ,形参也为y,字符串表达式为(y)*(y))。两例表面是相同的,函数调用为SQ(i++),宏调用为SQ(i++),实参也是相同的。但输出结果却大不相同,分析如下:

在使用函数的例子中,函数调用是把实参i值传给形参y后自增1。然后输出函数值。因而要循环5次。输出1~5的平方值。而在使用宏的例子中,宏调用时,只作代换。SQ(i++)被代换为((i++)*(i++))。在第一次循环时,由于i等于1,其计算过程为:表达式中前一个i初值为1,然后i自增1变为2,因此表达式中第2个i初值为2,两相乘的结果也为2,然后i值再自增1,得3。在第二次循环时,i值已有初值为3,因此表达式中前一个i为3,后一个i为4,乘积为12,然后i再自增1变为5。进入第三次循环,由于i 值已为5,所以这将是最后一次循环。计算表达式的值为5*6等于30。i值再自增1变为6,不再满足循环条件,停止循环。从以上分析可以看出函数调用和宏调用二者在形式上相似,在本质上是完全不同的。

"\","#","#@"和"##"

在用#define 定义时 , 斜杠("\")是用来续行的,"#"用来把参数转换成字符串,是给参数加上双引号。"##"则用来连接前后两个参数,把它们变成一个字符串,"#@"是给参数加上单引号。下面的例子会使您很容易理解。

#define Conn(x,y) x##y

#define ToChar(a) #@a

#define ToString(x) #x

int n = Conn(123,456); 结果就是n=123456;

char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";

char a = ToChar(1);结果就是a='1';

char* str = ToString(123132);就成了str="123132";

为什么需要”#”,” #@”和”##”这三个操作符呢?原因如下:

宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。如下:

#define OK 100

#include <stdio.h>

int main()

{
printf("OK");
printf("\n");
return 0;
}

上例中定义宏名OK表示100,但在printf语句中OK被引号括起来,因此不作宏代换。程序的运行结果为:OK,这表示把“OK”当字符串处理。

同样,宏名在源程序中若用单引号括起来,则预处理程序也不对其作宏代换。

宏定义的嵌套

宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。例如:

#define PI 3.1415926

#define S PI*y*y

对语句: printf("%f",s);

在宏代换后变为: printf("%f",3.1415926*y*y);

结束语

使用宏代替一个在程序中经常使用的常量,这样该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时,我们可以用较短的有意义的标识符来写程序,这样更方便一些。举一个大家比较熟悉的例子,圆周率π是在数学上常用的一个值,有时我们会用3.14来表示,有时也会用3.1415926等,这要看计算所需要的精度,如果我们编制的一个程序中要多次使用它,那么需要确定一个数值,在本次运行中不改变,但也许后来发现程序所表现的精度有变化,需要改变它的值,这就需要修改程序中所有的相关数值,这会给我们带来一定的不便,但如果使用宏定义,使用一个标识符来代替,则在修改时只修改宏定义即可,还可以减少输入 3.1415926这样长的数值多次的情况,我们可以如此定义 #define pi 3.1415926,既减少了输入又便于修改,何乐而不为呢?

另外,使用带参数的宏定义可完成函数调用的功能,又能减少系统开销,提高运行效率。正如C语言中所讲,函数的使用可以使程序更加模块化,便于组织,而且可重复利用,但在发生函数调用时,需要保留调用函数的现场,以便子函数执行结束后能返回继续执行,同样在子函数执行完后要恢复调用函数的现场,这都需要一定的时间,如果子函数执行的操作比较多,这种转换时间开销可以忽略,但如果子函数完成的功能比较少,甚至于只完成一点操作,如一个乘法语句的操作,则这部分转换开销就相对较大了,但使用带参数的宏定义就不会出现这个问题,因为它是在预处理阶段即进行了宏展开,在执行时不需要转换,即在当地执行。宏定义可完成简单的操作,但复杂的操作还是要由函数调用来完成,而且宏定义所占用的目标代码空间相对较大。所以在使用时要依据具体情况来决定是否使用宏定义。

2. 用#define怎样定义一个常量来表示一年有多少秒

不可。变量Seconds只是来代替。例如:5/Seconds,则代替为5/365*24*60*60则就计算不正确了。应加个括号。#defineSeconds (365*24*60*60)。即可。

一年有多少秒可以这样定义:#defineSECPERYEAR (365*24*60*60)

不必担心这个定义使用了乘法会在运行时效率降低,因为所有的编译器都会将这个乘法的积展开优化后再替换宏定义。而不是直接使用乘法运算。

#define year 31536000000i64 //365*24*60*60*1000

C++ Integer Constants

Integer constants are constant data elements that have no fractional parts or exponents. They always begin with a digit. You can specify integer constants in decimal, octal, or hexadecimal form. They can specify signed or unsigned types and long or short types。

(2)怎样用define定义文件宏常量扩展阅读:

C语言中无参宏定义的一般形式为:#define 宏名 字符串

其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

例如:#define M (a+b)它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。

3. C语言中的宏定义怎么用

C语言中的宏定义用法分为两种。

1、不带参数的宏定义比较简单,就是用一个指定的标识符来代表一个字符串。它的一般形式为“#define 标识符 字符串”,例如#define E 2.718281828459。这种方法使用户能以一个简单的名字代替一个长的字符串。

2、带参数的宏定义不是仅仅进行简单的字符串替换,还要进行参数替换。其定义的一般形式为;“#define 标识符(宏名)(参数表) 字符串”,字符串中包含在括号中所指定的参数。例如#define S(a,b) a*b area=S(3. 2)。

(3)怎样用define定义文件宏常量扩展阅读:

宏定义只占编译时间,函数调用则占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以执行相对宏定义会较慢。

使用宏定义次数多时,宏定义展开后源程序很长,因为每展开一次都使程序增长,但是执行起来比较快一点(这也不是绝对的,当有很多宏定义展开,目标文件很大,执行的时候运行时系统换页频繁,效率就会低下)。而函数调用不使源程序变长。

4. 能不能用 define 定义常量数组

不可以,下面是define的一些用法,希望对你有帮助。

1.简单的define定义

#define MAXTIME 1000

一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写

if(i<MAXTIME){.........}

编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。

这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。

2.define的“函数定义”

define可以像函数那样接受一些参数,如下

#define max(x,y) (x)>(y)?(x):(y);

这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。

但是这样做的话存在隐患,例子如下:
#define Add(a,b) a+b;
在一般使用的时候是没有问题的,但是如果遇到如:c * Add(a,b) * d的时候就会出现问题,代数式的本意是a+b然后去和c,d相乘,但是因为使用了define(它只是一个简单的替换),所以式子实际上变成了
c*a + b*d

另外举一个例子:
#define pin (int*);
pin a,b;
本意是a和b都是int型指针,但是实际上变成int* a,b;
a是int型指针,而b是int型变量。
这是应该使用typedef来代替define,这样a和b就都是int型指针了。

所以我们在定义的时候,养成一个良好的习惯,建议所有的层次都要加括号。

3.宏的单行定义
#define A(x) T_##x
#define B(x) #@x

#define C(x) #x
我们假设:x=1,则有:
A(1)------〉T_1
B(1)------〉'1'
C(1)------〉"1"

(这里参考了 hustli的文章)

3.define的多行定义

define可以替代多行的代码,例如MFC中的宏定义(非常的经典,虽然让人看了恶心)

#define MACRO(arg1, arg2) do { \
/* declarations */ \
stmt1; \
stmt2; \
/* ... */ \
} while(0) /* (no trailing ; ) */
关键是要在每一个换行的时候加上一个"\"

摘抄自http://www.blog.e.cn/user1/16293/archives/2005/115370.shtml 修补了几个bug

4.在大规模的开发过程中,特别是跨平台和系统的软件里,define最重要的功能是条件编译。

就是:
#ifdef WINDOWS
......
......
#endif
#ifdef LINUX
......
......
#endif

可以在编译的时候通过#define设置编译环境

5.如何定义宏、取消宏

//定义宏
#define [MacroName] [MacroValue]
//取消宏
#undef [MacroName]
普通宏
#define PI (3.1415926)

带参数的宏
#define max(a,b) ((a)>(b)? (a),(b))
关键是十分容易产生错误,包括机器和人理解上的差异等等。

6.条件编译
#ifdef XXX…(#else) …#endif
例如 #ifdef DV22_AUX_INPUT
#define AUX_MODE 3
#else
#define AUY_MODE 3
#endif
#ifndef XXX … (#else) … #endif

7.头文件(.h)可以被头文件或C文件包含;
重复包含(重复定义)
由于头文件包含可以嵌套,那么C文件就有可能包含多次同一个头文件,就可能出现重复定义的问题的。
通过条件编译开关来避免重复包含(重复定义)
例如
#ifndef __headerfileXXX__
#define __headerfileXXX__

文件内容

#endif

5. define的用法

有三种用法,例如替代多行的代码、条件编译,还有典型的宏定义,具体如下:

1、define最重要的用法是条件编译

#ifdef WINDOWS

......

......

#endif

#ifdef LINUX

......

......

#endif

可以在编译的时候通过#define设置编译环境

2、典型的使用方法

使用宏定义我们可以自己根据自己的习惯来定义甚至改变C语言的语法习惯,例如:

#defineBEGIN {

#defineEND }

int main()BEGIN

printf ("DEFINE---- ");

定义一个循环

#define LOOP for(;;)

重新定义数据类型

#define IT int

3、define可以替代多行的代码,在每一个换行的时候加上一个""

#define MAX(X,Y) do {

语句1;

语句2;

/* 注释的写法 */

} while(0) /* (no trailing ; ) */

(5)怎样用define定义文件宏常量扩展阅读:

参数

#define GPEBLT_FUNCNAME(basename) (SCODE (GPE::*)(struct GPEBltParms *))&GPE::##basename

在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符串。

#include<stdio.h>

#definepaster(n)printf("token"#n"=%d ",token##n)

intmain(void)

{

inttoken9=10;

paster(9);

return0;

}

输出为:token 9 = 10

6. C++ 中define(宏定义) 各种用法(含特殊),小举个例子,谢谢!

1、define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。而const定义的常量,在程序运行时,存在常量表中,且系统为它分配内存。

2、define定义的常量,预处理时只是直接进行了替换,因此在编译时不能进行数据类型检验。而const定义的常量,在编译时进行严格的类型检验,可以避免出错。

3、define定义表达式时要注意“边缘效应”。

例如:

#defineN1+2;

floata=N/2.0;

按照常规做法,可能会认为结果是3/2=1.5;

但是实际上,结果应该为1+2/2.0=2.0;

若想要实现3/2,则#defineN(1+2);

即为避免边缘效应,一定要加括号。

(6)怎样用define定义文件宏常量扩展阅读

C++宏定义

#define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。

1、简单的宏定义:

#define <宏名> <字符串>

例: #define PI 3.1415926

2、带参数的宏定义

#define <宏名> (<参数表>) <宏体>

例: #define A(x) x

7. C# 中如何定义全局的宏变量(#define)

如果是Debug,那么直接勾选下面的那个多选框就可以了。至于其他的自定义的宏,则在红色箭头指向的输入框中定义。

8. C#中如何定义全局的宏(#define)

在 Project->Properties -> Build 设置中有一个 Conditional compilation symbols,将你要设置的宏的名称写在这个设置中就是全局的宏定义。

1、在类的头部写上#define UInt32或者在项目的环境变量定义。

(8)怎样用define定义文件宏常量扩展阅读;

C++中宏的作用

1、使用宏定义常量

宏定义不是C/C++严格意义上的语句,所以定义后不加分号,使用define后的标示符来代替常量,当需要在程序中多次使用200这个值,比如定义数组的长度等,并且可能在以后对该值做出修改时,使用宏定义,仅需要改变宏定义所表示的值即可,而不需要到程序中去寻找哪些地方使用了200。

2、当定义局部变量时,const所定义的变量的作用域,仅限于const定义所在的函数段,而使用宏定义#define,其作用域不仅限于定义所在的函数段,而是从定义点到整个程序的结束。

9. C语言怎么用宏定义方法求绝对值

一、答案

#define ABS(x) ( (x)>0?(x):-(x) )

使用上述命令就可以使用宏定义绝对值。

二、关于宏定义语法说明

1、定义宏的语法

#define 标识符 常量 //注意, 最后没有分号

2、语法说明

#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。宏定义看似和变量定义一样,但是完全不是一个概念。

要区分开!变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值。

宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。

三、关于ABS函数定义说明

1、语法定义

int abs(int x)

其中x表示要求绝对值的数。

2、语法解释

求整数的绝对值。需要引用头文件math.h 或者 stdlib.h

3、特别注意

x必须是正整数或者正负数。不可以是浮点数类型。

(9)怎样用define定义文件宏常量扩展阅读

一、C语言宏的定义

采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本。

例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。

二、没有参数的宏

1、语法

#define 宏名称 替换文本

其中“替换文本”前面和后面的空格符不属于替换文本中的内容。替代文本本身也可以为空。

2、实例

#define TITLE "*** Examples of Macros Without Parameters ***"

#define BUFFER_SIZE (4 * 512)

#define RANDOM (-1.0 + 2.0*(double)rand() / RAND_MAX)

三、带参数的宏

1、定义

定义具有形式参数(简称“形参”)的宏。当预处理器展开这类宏时,它先使用调用宏时指定的实际参数(简称“实参”)取代替换文本中对应的形参。带有形参的宏通常也称为类函数宏(function-like macro)。

2、语法

#define 宏名称( [形参列表] ) 替换文本

#define 宏名称( [形参列表 ,] ... ) 替换文本

10. 如何在C++中定义宏常量pi

C++中用宏来定义pi,可以这样:

#definePI3.1415926

说明:

宏定义的格式是:

#define 宏名 字符串

对照上面的定义,宏名是PI,字符串是3.1415926。

编译器在编译程序时,先使用宏名代表的字符串把所有宏名替换,然后再进行编译。

注意点:

  1. 宏定义后面不需要分号;

  2. 宏名的命名和标准变量的命名规则相同,不允许数字开头。

  3. 作为编程习惯,一边用全大写字母作为宏名,比如:MAX_ITEM, MIN_NUM等等。

  4. 对于算术表达式的宏定义,最好用小括号括起来,比如:

    #define MAX_NUM (2+4)

    如果程序里有4*MAX_NUM,预编译被替代后就是4*(2+4),想想如果没有括号,就会替代成4*2+4,两者的结果截然不同,所以一定要注意这种定义。

热点内容
马路上汽车的噪音在多少分贝 发布:2023-08-31 22:08:23 浏览:2169
应孕棒多少钱一盒 发布:2023-08-31 22:08:21 浏览:1637
标准养老金一年能领多少钱 发布:2023-08-31 22:05:05 浏览:1935
湖北通城接网线多少钱一个月 发布:2023-08-31 21:59:51 浏览:2003
开随车吊车多少钱一个月 发布:2023-08-31 21:55:06 浏览:1764
京东付尾款怎么知道前多少名 发布:2023-08-31 21:52:58 浏览:2088
在学校租铺面一个月要多少钱 发布:2023-08-31 21:52:09 浏览:2226
2寸有多少厘米 发布:2023-08-31 21:50:34 浏览:1868
知道电压如何算一小时多少电 发布:2023-08-31 21:46:20 浏览:1871
金手镯54号圈周长是多少厘米 发布:2023-08-31 21:44:28 浏览:2011