C 什么是printf()、语句或表达式?为什么它与三元运算符一起工作?
如果三元运算符要求的是表达式而不是语句,那么它为什么要编译C 什么是printf()、语句或表达式?为什么它与三元运算符一起工作?,c,printf,conditional-operator,C,Printf,Conditional Operator,如果三元运算符要求的是表达式而不是语句,那么它为什么要编译printf()?是printf()表达式或语句?调用函数(任何函数)时,它是表达式。当您添加终止将该表达式转换为语句 事实上,您可以将任何表达式转换为语句,方法是单独使用表达式,并添加语句终止符。例如,所有赋值都是表达式,因此 a = b + c 是一个表达式,但是 a = b + c; 这是一份声明 还应注意,通常所有表达式都“返回”一个值。对于赋值表达式,它返回被赋值的变量的值(因此在上面的示例中,赋值表达式在赋值后返回a的值)
printf()代码>?是printf()代码>表达式或语句?调用函数(任何函数)时,它是表达式。当您添加终止代码>将该表达式转换为语句
事实上,您可以将任何表达式转换为语句,方法是单独使用表达式,并添加语句终止符代码>。例如,所有赋值都是表达式,因此
a = b + c
是一个表达式,但是
a = b + c;
这是一份声明
还应注意,通常所有表达式都“返回”一个值。对于赋值表达式,它返回被赋值的变量的值(因此在上面的示例中,赋值表达式在赋值后返回a
的值)。这就是将表达式链接在一起的方法。在上面的示例中,语句只是丢弃赋值表达式的结果
返回值的表达式的唯一例外是函数调用表达式,它使用void
返回类型调用函数。它们没有任何结果,不能用于链式表达式
关于三元表达式,它接受三个子表达式,对第一个子表达式求值,并使用结果作为布尔值来选择其他两个表达式中应求值的表达式
例如:
a < b ? printf("a < b\n") : printf("a >= b\n");
a=b\n”);
上一行是一个声明。该语句包含一个表达式,即三元表达式,该表达式包含三个子表达式(条件和两个函数调用)
重要的是要知道,三元表达式的两个分支中只有一个将被计算,因此上面的示例不会调用printf
两次,只调用一次。当您调用函数(任何函数)时,它是一个表达式。当您添加终止代码>将该表达式转换为语句
事实上,您可以将任何表达式转换为语句,方法是单独使用表达式,并添加语句终止符代码>。例如,所有赋值都是表达式,因此
a = b + c
是一个表达式,但是
a = b + c;
这是一份声明
还应注意,通常所有表达式都“返回”一个值。对于赋值表达式,它返回被赋值的变量的值(因此在上面的示例中,赋值表达式在赋值后返回a
的值)。这就是将表达式链接在一起的方法。在上面的示例中,语句只是丢弃赋值表达式的结果
返回值的表达式的唯一例外是函数调用表达式,它使用void
返回类型调用函数。它们没有任何结果,不能用于链式表达式
关于三元表达式,它接受三个子表达式,对第一个子表达式求值,并使用结果作为布尔值来选择其他两个表达式中应求值的表达式
例如:
a < b ? printf("a < b\n") : printf("a >= b\n");
a=b\n”);
上一行是一个声明。该语句包含一个表达式,即三元表达式,该表达式包含三个子表达式(条件和两个函数调用)
重要的是要知道,三元表达式的两个分支中只有一个将被计算,因此上面的示例不会调用printf
两次,只调用一次。补充了Joachim的答案:
调用函数printf
时,函数本身就是一个表达式,它根据打印的字符数返回一个值。然而,人们可能会放弃这个返回值,只关心调用printf
的副作用,即将数据打印到stdout
当你这样做的时候
a = b + c;
它意味着计算子表达式b+c
,然后将其分配给a
,这也是c中的一个表达式-它返回分配给左侧的值;代码>将其变成一个陈述。在约阿希姆的回答中添加:
调用函数printf
时,函数本身就是一个表达式,它根据打印的字符数返回一个值。然而,人们可能会放弃这个返回值,只关心调用printf
的副作用,即将数据打印到stdout
当你这样做的时候
a = b + c;
它意味着计算子表达式b+c
,然后将其分配给a
,这也是c中的一个表达式-它返回分配给左侧的值;代码>将其变成一个语句。您能给出一个简短的代码示例,说明您的问题吗?这会让我更清楚。它是一个函数,有一个返回值(打印值IIRC的数量),所以它可以参与一个表达式。“三元if”应该是什么意思?您是指条件运算符?:
?您不能使用printf(
…)代码>在三元表达式中;但是您可以使用printf(
…)
。函数调用是一个表达式;语句的一种形式是后跟分号的表达式。您能给出一个简短的代码示例来说明您的问题吗?这会让我更清楚。它是一个函数,有一个返回值(打印值IIRC的数量),所以它可以参与一个表达式。“三元if”应该是什么意思?您是指条件运算符?:
?您不能使用printf(
…)代码>在三元表达式中;但是您可以使用printf(
…)
。函数调用是一个表达式;语句的一种形式是表达式后跟分号.Iek。