C Library User 手册(7)

240 篇文章 11 订阅

7 Functions

你写函数是为了指定一个程序执行时的所有动作。一个函数的类型告诉你它返回的结果的类型(如果有的话)。它还可以告诉你当你从表达式中调用该函数时,该函数所期望的任何参数的类型。
本章只简要介绍了与使用标准C语言库最相关的函数的那些方面:

7.1 Argument promotion

当函数的类型未能提供任何关于参数的信息时,就会发生参数推广。如果函数声明不是一个函数原型,或者如果参数是不同数量的参数中的一个未命名的参数,就会发生推广。在这种情况下,参数必须是一个r值表达式。因此。
■ 一个整数类型的参数被提升。
■ 一个Ty的数组类型的lvalue变成一个Ty的指针类型的rvalue。
■一个返回Ty的函数类型的函数代号成为返回Ty的函数的指针类型的r值。
■一个float类型的参数被转换为double。

7.2 Expressions

在测试上下文表达式中,如果计算值为非零,表达式的值会导致控制在语句中以一种方式流动,如果计算值为零则以另一种方式流动。你只能写一个有标量r值结果的表达式,因为只有标量可以与零进行比较。
出现在副作用上下文中的表达式不指定任何值,也不指定任何对象或函数。因此,它可以有void类型。你通常评估这样的表达式的副作用–在评估表达式时发生的程序状态的任何变化。当程序将一个值存储在一个对象中,从一个易失性限定类型的对象中访问一个值,或者改变一个文件的状态时,就会产生副作用。

7.3 Statements

一个do语句执行一个或多个语句,而它的测试上下文表达式有一个非零值。

do
statement while (test);

表达式语句在副作用的背景下评估一个表达式:

printf("hello\n");
y = m * x + b;
++count;
call a function
store a value
alter a stored value

while语句执行一个语句零次或多次,同时测试背景表达式有一个非零值:

while (test) statement

for 语句执行一个语句零次或多次,而可选的测试上下文表达式 test 有一个非零值。你也可以在for语句中写两个表达式,se-1和se-2,它们分别在一个副作用上下文中。


for (se-1; test; se-2) statement

只有当测试上下文表达式的值为非零时,if语句才会执行一条语句:

if (test) statement

一个if-else语句执行两条语句中的一条,取决于测试上下文表达式是否有一个非零值:

if (test) statement-1
else statement-2

返回语句终止了函数的执行,并将控制权转移到调用该函数的表达式。如果你在返回语句中写了可选的rvalue表达式,其结果必须与函数返回的类型赋值兼容。程序将表达式的值转换为返回的类型,并将其作为函数调用的值返回:

return expression;

switch语句根据整数表达式的值,跳转到受控语句中的某个位置:

switch (expr) {
case val-1:
stat-1;
break; case val-2:
stat-2; default:
stat-n
falls through to next
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值