C++ 究竟什么是C++;定义、声明和赋值?
我倾向于交替使用define、declare和assign这些词,但这似乎会冒犯一些人。这是否合理?我应该只在第一次分配给变量时使用declare这个词吗?或者还有更多吗?定义和声明是相似的,但分配是非常不同的 这里我声明(或定义)一个变量:C++ 究竟什么是C++;定义、声明和赋值?,c++,variable-assignment,terminology,declare,C++,Variable Assignment,Terminology,Declare,我倾向于交替使用define、declare和assign这些词,但这似乎会冒犯一些人。这是否合理?我应该只在第一次分配给变量时使用declare这个词吗?或者还有更多吗?定义和声明是相似的,但分配是非常不同的 这里我声明(或定义)一个变量: int x; x = 0; 在这里,我为该变量赋值: int x; x = 0; 在这里,我在一份声明中做到了这两个方面: int x = 0; 注意 并非所有语言都支持在一条语句中声明和赋值: int x = 0; T-SQL declare
int x;
x = 0;
在这里,我为该变量赋值:
int x;
x = 0;
在这里,我在一份声明中做到了这两个方面:
int x = 0;
注意
并非所有语言都支持在一条语句中声明和赋值:
int x = 0;
T-SQL
declare x int;
set x = 0;
有些语言要求在声明时为变量赋值。此要求允许语言的编译器或解释器推断变量的类型:
int x;
x = 0;
Python
x = 0
这些术语在各种语言的标准中通常具有精确的含义。在这种情况下,不应将它们混为一谈 例如,在c中:
- 一个函数只能定义一次(当你说它做什么的时候),但它也可以在定义之前声明(当你说它接受什么参数和返回什么类型的时候)
- 同样,当您说出一个变量是什么类型时,就会声明它,并且对于每个作用域,这种情况只发生一次。但您可以重复指定一个值。(有些语言还区分初始化(在声明时给变量一个值)和赋值(以后更改值)。)
int foo()
{
return 1;
}
int var; // or, e.g. int var = 5; but this is clearer.
声明告诉编译器或程序员函数或变量存在。e、 g
int foo();
extern int var;
赋值是指变量的值设置,通常使用=运算符。e、 g
a = b;
a = foo();
这些差异看起来很微妙,但它们很重要。不是所有的语言都有相同的区别,但是在C++中,<>强>变量声明< /强>使编译器的名称和类型的名称为编译器
int i;
变量定义分配存储并指定变量的初始值
i = 1;
int x;
您可以像通常所做的那样,将变量声明和定义合并到一个语句中
int x = 1;
在函数中声明变量也会为变量留出内存,因此下面的代码隐式地将变量a
定义为其声明的一部分
int main()
{
int a;
return 0;
}
由于变量a
由编译器自动定义,因此它将包含分配给它的内存位置中的任何值。这就是为什么在明确为自动变量指定已知值之前,使用自动变量是不安全的
每当您更改程序中变量的值时,赋值就会发生
x = 2;
x++;
x += 4;
函数声明类似于变量声明,使编译器知道函数签名。这允许您在定义函数之前在源代码中调用函数,而不会导致编译器错误
int doSomething(float x);
函数定义指定函数的返回类型、名称、参数列表和指令。这些元素中的前三个必须与函数声明匹配。函数在给定程序中只能定义一次
int doSomething(float x)
{
if( x < 0 )
{
x = -x;
}
return static_cast<int>(x);
}
int doSomething(浮点x)
{
if(x<0)
{
x=-x;
}
返回静态_-cast(x);
}
您可以将函数decartion和definition合并为一个函数,但必须在程序中任何地方调用该函数之前这样做。正确答案取决于您所说的语言。计算机语言通常有特定的术语,要么是因为语言规范,要么是因为语言周围的社区。当我使用COBOL时,COBOL的术语与其他主流语言有很大不同(从更接近语言开发主流而非主流业务的角度来看)。福思发展了一些奇怪的术语
x = 2;
x++;
x += 4;
如果你懂英语,你通常可以从一个词的正常意义上了解它的意思,但千万不要过分依赖它。跨语言或语言社区的特定单词也是如此。正如前面所说,这可能取决于语言。我认为这真的取决于这些词是否用于课堂之类的事情。对于这里讨论的大多数数据类型,这个问题可能没有太大的相关性。在C++中,一个类或结构总是有一个精确的定义,但是可以声明为零或更多次。没有定义就不能声明类。所以“声明”可能是“使用”的同义词 在大多数语言中,简单类型(如整数)不需要像类那样的定义。常规角色: 定义=声明+保留空间。 定义、声明和分配有两种情况:
对于变量: --定义:
告诉编译器为变量保留内存
i = 1;
int x;
--声明:告诉编译器该变量是在其他地方定义的
extern int x;
--作业:告诉编译器将值放入变量中
x = 0;
对于功能: --定义:
int functionDef(int x){
int x;
...
...
...
return x;
}
--声明:
它只是函数的原型
int functionDef(int x);
我要说的是,Python没有任何形式的“声明”。类和函数是“定义的”,变量是在赋值时创建的。你并不真正“声明”变量,因为它们只是assi的名字