变量赋值是语句还是表达式?
Is variable assignment a statement or expression?
我很熟悉语句做 某事 并且表达式是 "collection of symbols that make up a quantity" (What is the difference between an expression and a statement in Python?)。我的问题是:当你给变量赋值时,赋值是语句还是表达式?
例如(在 C 中):
int x = 5;
嗯,当你说
int x = 5;
那是一个声明,恰好包含一个初始化。
但是如果你说
x = 5
那是一个表达式。如果你在它后面加一个分号:
x = 5;
现在是声明。
表达式语句可能是 C 程序中最常见的语句类型。表达式语句就是任何表达式,后面有一个分号。所以有很多东西可能看起来像某种其他类型的语句,实际上只是表达式语句。也许最好的例子就是经典
printf("Hello, world!\n");
很多人可能认为这是 "print statement"。但它实际上只是另一个表达式语句:由单个函数调用组成的简单表达式
printf("Hello, world!\n")
再次跟一个分号。
粗略地说,在 C 中;
- 语句是产生可观察效果的一段代码;
- 表达式是一种代码构造,它访问至少一个数据项,对该访问(或那些访问)的结果执行某些操作,并产生至少一个结果。一个表达式可以由(更小的)表达式组成。
表达式语句是一种具有计算表达式的单一目的的语句 - 尽管该表达式可能是任意复杂的(包括由其他表达式组成)。还有其他类型的语句,例如跳转语句(例如 goto
)、标签语句(例如 goto
的目标)、做出决定的选择语句(例如 switch
、if
), 和迭代语句(例如循环)等
像这样的声明;
int x = 5;
定义名为 x
的变量并使用表达式 5
对其进行初始化。 5
是文字值。
如果之前声明了x
,
x = 5;
是一个简单的表达式语句 - 它的唯一目的是计算一个赋值表达式。 5
同样是一个值为 5
的文字。因此,x = 5
是一个表达式,它将 x
赋值为 5
。结果是值5
,这就是表达式语句
的原因
printf("%d\n", (x = 5));
都将 x
赋值为 5
并打印值 5
我很熟悉语句做 某事 并且表达式是 "collection of symbols that make up a quantity" (What is the difference between an expression and a statement in Python?)。我的问题是:当你给变量赋值时,赋值是语句还是表达式?
例如(在 C 中):
int x = 5;
嗯,当你说
int x = 5;
那是一个声明,恰好包含一个初始化。
但是如果你说
x = 5
那是一个表达式。如果你在它后面加一个分号:
x = 5;
现在是声明。
表达式语句可能是 C 程序中最常见的语句类型。表达式语句就是任何表达式,后面有一个分号。所以有很多东西可能看起来像某种其他类型的语句,实际上只是表达式语句。也许最好的例子就是经典
printf("Hello, world!\n");
很多人可能认为这是 "print statement"。但它实际上只是另一个表达式语句:由单个函数调用组成的简单表达式
printf("Hello, world!\n")
再次跟一个分号。
粗略地说,在 C 中;
- 语句是产生可观察效果的一段代码;
- 表达式是一种代码构造,它访问至少一个数据项,对该访问(或那些访问)的结果执行某些操作,并产生至少一个结果。一个表达式可以由(更小的)表达式组成。
表达式语句是一种具有计算表达式的单一目的的语句 - 尽管该表达式可能是任意复杂的(包括由其他表达式组成)。还有其他类型的语句,例如跳转语句(例如 goto
)、标签语句(例如 goto
的目标)、做出决定的选择语句(例如 switch
、if
), 和迭代语句(例如循环)等
像这样的声明;
int x = 5;
定义名为 x
的变量并使用表达式 5
对其进行初始化。 5
是文字值。
如果之前声明了x
,
x = 5;
是一个简单的表达式语句 - 它的唯一目的是计算一个赋值表达式。 5
同样是一个值为 5
的文字。因此,x = 5
是一个表达式,它将 x
赋值为 5
。结果是值5
,这就是表达式语句
printf("%d\n", (x = 5));
都将 x
赋值为 5
并打印值 5