C语言基础——(4)for循环语句、if 分支语句

数据类型的转换

如果一个表达式里的数字类型不同就必须首先把这些数字转换成同一个类型然后再进行计算。
这个转换过程就叫做隐式类型转换,完全由计算机完成。隐式类型转换过程中一定把占地小的类型转换成占地大的类型。如果不同数字的类型占空间大小一样就把整数类型转换成浮点类型,把有符号类型转换成无符号类型。

C语言中可以临时给数字任意指定类型,这叫做强制类型转换:
强制类型转换的格式如下:
(char)300——把300这个数字当成字符类型看待,当做字符类型看待的时候就是44(少3个字节)
强制类型转换有可能造成数据的丢失

类型转换不会修改现有存储区的内容,只是用一个新的存储区记录转换后的结果,然后用这个新存储区里的内容做后面的计算。

分支语句

分支语句可以在程序执行的时候从几组语句中选择一组执行而忽略其他组。如果编写程序的时候遇到多种可能性,任何两个可能性不会同时出现,这种时候就可以采用分支语句解决。

if关键字

if关键字可以用来编写分支,if语句要求为每种可能性编写对应的处理语句。if语句中需要为每组语句编写一个对应的逻辑表达式,如果某个逻辑表达式的结果为真就执行它后面所对应的那组语句。
只有不会同时出现多种可能性才可以用分支解决。
例如:

int main()
{
    int num;
    scanf("%d", &num);
    if(num < 0)
    {
        printf("负数\n");
    }
    else if(num < 0)
    {
        printf("正数\n");
    }
    else if(!num)
    {
        printf("零\n");
    }
    return 0;
}

如果多种可能性中必然有一个可能性会出现就可以省略最后一组语句的逻辑表达式和 if 关键字。
if 分支中最好把简单逻辑表达式写在前面,if 分支中所有逻辑表达式之间有前后顺序,如果前面的逻辑表达式结果为真就忽略后面的逻辑表达式。可以利用这一点简化后面的逻辑表达式。
不可以把 if 分支当作多种无关的语句看待

switch…case语句

使用switch…case关键字也可以编写分支语句。
如果一个分支里包含有限个整数,每个整数需要使用专门的语句处理,这种分支可以采用switch…case关键字编写。
例如:

int main()
{
    int season = 0;
    printf("请输入代表季节的数字:");
    scanf("%d", &season);
    switch(season){
        case 0:      //选择分支语句开始位置
            printf("春天\n");
            break;     //语句结束关键字
        case 1:
            printf("夏天\n");
            break;
        case 2:
            printf("秋天\n");
            break;
        case 3:
            printf("冬天\n");
            break;
    }
    return 0;
}

循环结构

for 循环

for关键字可以用来编写循环。
for 循环里可以让一个变量依次代表一组数字,然后使用一组固定的语句处理它所代表的每一个数字,这个变量叫做循环变量。采用如下结构描述循环变量的变化过程:
for(把开始数字赋值给循环变量;用逻辑表达式描述循环变量和结束条件之间的关系;循环变量的变化规律)
例如:(在屏幕上依次显示12345)

int main(){
    int num = 0;
    for(num = 1; num <= 5; num++)
    {
        printf("%d ", num);
    }
    printf("\n");
    return 0;
}

for循环运行顺序:
假如有如下的for循环:
for(1;2;3){4}
它按照如下的方式分组执行:
【1,2】【4,3,2】【4,3,2】….【4,3,2】
第一组和其他组不同,先赋值然后在开始执行循环体前就判断依次结束条件,随后每次循环变量变化后在判断结束条件。也就是说正常情况下for循环一定在两个相邻组之间结束,如果某一组最后编号为2的语句结果是假则循环立刻结束,否则启动下一组。所以当for循环正常结束的时候循环变量一定是使逻辑判断结果为假的情况。
另外,for循环大括号里的语句有可能不执行的,当第一组情况就判断逻辑结果为假就不会执行大括号里的语句。
for循环小括号里的每部分的语句都可以省略
如果省略小括号中间的逻辑表达式就表示逻辑表达式的结果永远为真,这种循环不能正常结束,叫做死循环。
例如:

int main(){
    int num = 0;
    for(num = 1; ; num++)
    {        //死循环,会一直打印数字下去。
        printf("%d \n", num);
    }
    return 0;
}

小括号最前面和最后面的部分可以是用逗号连接的多条语句。另外,C99规范中允许在循环的小括号里临时声明循环变量。这种循环变量只能在循环里使用,循环结束后就不存在了。

循环中可以使用 break;语句立刻结束循环的执行。如果执行了break;语句,那么之后循环里的一切语句都不再执行,循环变量也不再变化了。所以如果一个循环结构是采用break;语句结束的则循环结束之后循环变量依然能使逻辑判断语句为真。
所有死循环必须使用break;语句结束。当编写循环的时候不知道循环需要重复多少次的时候就可以采用死循环进行实现。

continue:循环中还可以使用continue;语句直接跳到大括号的末尾,中间的语句这次循环都不执行。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值