《C和指针》笔记(四)

(四)语句

空语句

空语句本身只包含一个分号。它所适用的场合是语法要求出现一条完整的语句,但并不需要它执行任何任务。

表达式语句

C并不存在专门的“赋值语句”,赋值就是一种操作,就像加法和减法一样,就在表达式内进行。

例:
x = y + 3;
ch = getchar();
实际上是表达式语句,而不是赋值语句。

y + 3;
getchar();
这两条语句也完全合法,但它们并未使用赋值操作符。

a++;
这条语句并没有赋值操作符,但它却是一条非常合理的表达式语句。++操作符将增加变量a的值,这就是它的副作用。

代码块

代码块就是位于一对花括号之内的可选的声明和语句列表。它允许你在语法要求只出现一条语句的地方使用多条语句。

if语句

if( expression )
    statement
else
    statement

C并不具备布尔类型,而是用整型来代替。零值表示“假”,非零值表示“真”。

在没有边界的条件下,else子句从属于最靠近它的不完整的if语句。

goto语句

goto 语句标签;
要使用goto语句,你必须在你希望跳转的语句前面加上语句标签。语句标签就是标识符后面加个冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。

goto是一种危险的语句:

    i = 0;
outer_next:
    if(i >= NUM_ELEMENTS - 1)
        goto outer_end;
    j = i + 1;
inner_next:
    if(j >= NUM_ELEMENTS)
        goto inner_end;
    if(value[i] <= value[j])
        goto no_swap;
    temp = value[i];
    value[i] = value[j];
    value[j] = temp;
no_swap:
    j += 1;
    goto inner_next;
inner_end:
    i += 1;
    goto outer_next;
outer_end:
    ;

下面是一个功能相同的程序:

for(i = 0; i < NUM_ELEMENTS - 1; i += 1){
    for(j = i + 1; j < NUM_ELEMENTS; j += 1){
        if(value[i] > value[j]){
            temp = value[i];
            value[i] = value[j];
            value[j] = temp;
        }
    }
}

但是,使用goto语句来跳出多层嵌套的循环可能非常合适。

    while( condition1 ){
        while( condition2 ){
            while( condition3 ){
                if(some disaster)
                    goto quit;
            }
        }
    }
quit: ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值