linux下的C语言学习----基础篇02(运算符、控制流)

本文详细介绍了C/C++中的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符,并通过实例解释了它们的用法。此外,还讲解了控制流中的循环(while、do...while、for)和分支(switch-case)结构,结合实例展示了如何使用这些结构实现特定功能。
摘要由CSDN通过智能技术生成

一、运算符

  • 算术运算符
    +、-、*、/、%、++(自加1)、–(自减1)等等
    %:求余、取模(操作数必须为整数)
    ++:分两种情况。
    1、++a
    2、a++
    例:
    下面程序中,后++表示先将a的值打印出来,再令a的值+1存进a中;前++则表示先让a的值+1再将a值打印出来。
#include <stdio.h>

int main(void)
{
    
    int a = 0;
    printf("%d\n", a++);
   
    int b = 0;
    printf("%d\n", ++b);
    
    return 0;
}
  • 再举个例子:
#include <stdio.h>

int main(void)
{

    int i = 5;
    while (i++ < 10)
    {
        printf("%d\n", i);
    }
    return 0;
}

条件:i++ < 10 按照运算优先级 ++ 大于 < ,但是在运算过程中还是按照后++的运算规则,先使用i值,再将i=i+1传递下去。所以运算结果为:6,7,8,9,10。

  • 关系运算符
    <=、>=、>、<、(==、!=运算等级小于前面的4个运算符
    前4个运算符运算顺序为:从左到右

  • 逻辑运算符
    !、&&、||
    运算顺序为:!> && > ||

&&:(表达式1) && (表达式2)
只有表达式1和表达2 都为真,整个式子的值真;如果表达式1的值为假,表达式2不再计算

|| :(表达式1) || (表达式2)
只要有一个表达式的值为真,整个式子的值就为真;两个式子都为假,整个式子才为假;
如果表达式1的值为真,表达式2不再计算

! :!(表达式)
如果表达式为真,结果为假;如果表达式为假,结果为真

  • 位运算符
    &、|、~、^、<<、>>
    &:对应位进行与运算,全1为1,有0为0;
    | :对应位进行或运算,全0为0,有1为1;
    ~:按位取反;
    ^:对应位进行异或运算,相同为0,不同为1;
    <<:有符号数:符号位不变,左边移出的位舍弃,右边空出的位补0;
    无符号数:左边移出的位舍弃,右边空出的位补0;
    左移n位,相当于乘2的n次方;
    >>:有符号数:符号位不变,右边边移出的位舍弃,左边空出的位补符号位;
    无符号数:右边边移出的位舍弃,左边空出的位补0;
    右移n位,相当于除以2的n次方;
  • 利用位运算符举个例子:
    输入两个整数保存到两个变量,交换两个变量的值,不能用中间变量
    (还可以用算术运算符解决)
#include <stdio.h>

int main(void)
{
    int x=3, y=4;
    x = x ^ y;
    y = x ^ y;//x^y^y
    x = y ^ x;//x^y^x
    printf("%d\n%d\n", x, y);
    return 0;
}
  • 其他运算符
    赋值
    = 、+= 、-= 、*= 、/= 、%=
    例:a+=1等价于a=a+1;
    逗号:,
    (式子1),(式子2),(式子3)
    运算顺序为:从左往右
#include <stdio.h>

int main(void)
{
    int a = 3;
    a = ((a + 3), (a++), (a + 5));
    printf("%d\n", a);
    return 0;
}
  • sizeof():长度运算符
    当sizeof后接的是变量或者常数时,可以省去括号;当sizeof后接的是数据类型(int或char等等)则必须加上括号。
  • ?:(三目运算符)
    先计算表达式1,如果结果为真,表达式2的值就是整个式子的值;否则(表达式1为假),表达式3的值就是整个式子的值。

二、控制流

  • 循环控制
    循环控制分三种,while、do…while、和for
    讨论其中一种:while
#include <stdio.h>

int main(void)
{
    int i;
    while (i++ < 100)//入口条件
    {
        printf("%d\n", i);//打印出每次循环的i值
        if (i == 5)//如果i=5,跳出while循环
            break;
    }
    return 0;
}
  • 其中for(;;)等价于while(1)
  • 分支
    重点讨论一下:switch-case
    switch(变量或表达式) //表达式或变量必须是整型
    {
    case 整型常量1:
    语句1;
    语句2;…
    break;
    case 整型常量2:
    语句3;
    语句4;…
    break;
    case 整型常量3:
    语句5;
    语句6;…
    break;
    default:
    语句n;
    }
  • 举个例子:打印输出如下图形(利用循环控制语句完成)
    在这里插入图片描述
#include <stdio.h>

int main(void)
{
    char x = 65;
    int i, j;
    for (i = 0; i < 6; i++) //控制行数
    {
        for (j = 0; j < 5 - i; j++) //控制空格
        {
            printf(" ");
        }
        for (j = 0; j < (2*i-1)/2; j++) //控制字符
        {
            printf("%c", x++);
        }
        for (j = (2*i-1)/2; j < 2*i-1; j++) //控制字符
        {
            printf("%c", x--);
        }
        x = 65;
        printf("\n");
    }
    return 0;
}
  • 以上内容都是自己的理解,如有错误,还望指出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值