0
点赞
收藏
分享

微信扫一扫

2022/4/5操作符

一只1994 2022-04-05 阅读 28
c语言

#define _CRT_SECURE_NO_WARNINGS 1
//操作符
//算数操作符

#include<stdio.h>
/ %
//int main()
//{
//    //int a = 3 / 5;//整数除法
//    //float a = 3.0 / 5;//整数除法
//    int a = 7 % 3;//两段必须是整数
//    printf("%f\n", a);
//    return 0;
//}

//移位操作符
//int main()
//{
//    int a = -1;
//    //把a的二进制向左移动一位,右边补零
//    //把a的二进制向右移动一位 1 左边补原符号位(算术右移) 2 左边补零(逻辑右移)
//    int b = a >> 1;
//    //当前的右移操作符使用的是算术右移
//    //a本身不发生变化
//    printf("%d\n", b);
//    return 0;
//}
//整数的二进制表示形式:其实有3种
//原码:直接根据数值写出的二进制序列就是原码
//反码:原码的符号位保持不变,其他位按位取反就是反码
//补码:反码加一,就是补码
//以上都是负数,对于正整数来说原码反码补码相同

//int main()
//{
//    int a = 3;
//    int b = 5;
//
//    //& - 按(2进制)位与
//    /*int c = a & b;*/
//    //a 00000000000000000000000000000011
//    //b 00000000000000000000000000000101
//    //c 00000000000000000000000000000001
//
//    //| - 按(2进制)位或
//    /*int c = a | b;*/
//    //a 00000000000000000000000000000011
//    //b 00000000000000000000000000000101
//    //c 00000000000000000000000000000111 - 7
//
//    //^ - 按(2进制)位异或
//    //对应的二进制位进行异或
//    //相同为零,相异为一
//    int c = a ^ b;
//    //a 00000000000000000000000000000011
//    //b 00000000000000000000000000000101
//    //c 00000000000000000000000000000110 - 6
//
//    printf("%d\n", c);
//
//    return 0;
//}

//交换
//int main()
//{
//    int a = 5;
//    int b = 3;
//    printf("a = %d b = %d\n", a, b);
//    a = a ^ b;
//    b = a ^ b;
//    a = a ^ b;
//    printf("a = %d b = %d\n", a, b);
//    return 0;
//}

//int main()
//{
//    int a = 13;
//    int c = 0;
//    int i = 0;
//    while (1)
//    {
//        int b = 0;
//        b = a & 1;
//        if (b == 1)
//        {
//            i++;
//        }
//        a = a >> 1;
//        c++;
//        if (c == 31)
//        {
//            break;
//        }
//        
//    }
//    printf("%d", i);
//    return 0;
//}

//
//int main()
//{
//    int a = 13;
//    a = a | (1 << 4);
//    printf("%d\n", a);
//    return 0;
//}

//复合赋值符
//int main()
//{
//    int a = 10;
//    a = 100;
//    //a = a + 100;//
//    //a += 100;//两种写法完全等价
//    return 0;
//}
// =  赋值
// == 判断

//单目操作符 ! + - & sizeof ~ --(前置、后置) ++(前置、后置) *  强制类型转换

//int main()
//{
//    int flag = 0;
//    printf("%d\n", !flag);
//    //if (flag)
//    //{
//    //    printf("hehe\n");
//    //}
//    flag为假,打印哈哈
//    //if (!flag)
//    //{
//    //    printf("haha\n");
//    //}
//    return 0;
//}

//int main()
//{
//    int a = 10;
//    a = -a;
//    printf("%d\n", a);
//    return 0;
//}

//sizeof
//int main()
//{
//    int a = 10;
//    int arr[10] = { 0 };
//    printf("%d\n", sizeof(a));//计算a所占空间的大小,单位是字节
//    printf("%d\n", sizeof(int));//计算a所占空间的大小,单位是字节
//    printf("%d\n", sizeof a);//计算a所占空间的大小,单位是字节
//    printf("%d\n", sizeof(arr));//计算a所占空间的大小,单位是字节
//    //短整形为2个字节
//    //sizeof括号中放的表达式是不参与运算的!
//
//    return 0;
//}

//int main()
//{
//    int a = -1;
//    int b = ~a;
//    //~按位取反
//    printf("%d\n", b);
//    return 0;
//}

//int main()
//{
//    int a = 10;
//    //int b = a++;//后置
//    //int b = ++a;//前置
//    int b = a--;//后置
//    int b = --a;//前置
//    printf("%d %d\n", a, b);
//    return 0;
//
//}

//int main()
//{
//    int a = 10;
//    printf("%p\n", &a);//& - 取地址符
//    int* pa = &a;
//    *pa = 20;//* 解引用操作符 - 间接引用操作符
//    printf("%d\n", a);
//
//    return 0;
//}

强制类型转换
//int main()
//{
//    int a = (int)3.14;
//    return 0;
//}


//int main()
//{
//    int a = 3;
//    int b = 5;
///*    if (a == b);
//    if (a != b);
//    if (a <= b);
//    if (a >= b)*/;
//    //......
//    //比较两个字符串相等 不能使用 ==
//    //
//}
//
//int main()
//{
//    int a = 3;
//    int b = 0;
//    if (a && b);
//    if (a || b);
//
//}

//int main()
//{
//    int i = 0, a = 0, b = 2, c = 3, d = 4;
//    i = a++ && ++b && d++;
//    i = a++ || ++b || d++;
//    return 0;
//}

//三目操作符
//int main()
//{
//    int a = 3;
//    int b = 0;
//    b = a > 5 ? 1 : -1;
//    printf("%d\n", b);
//    return 0;
//
//}

逗号表达式
//int main()
//{
//    int a = 3;
//    int b = 5;
//    int c = 0;
//    int d = (c = 5, a = c + 3, b = a - 4, c += 5);//逗号表达式要从左向右依次计算,最终结果是最后的表达式
//    printf("%d %d %d %d", a, b, c, d);
//    return 0;
//
//}
//
//
//下标引用操作符
//int main()
//{
//    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//    printf("%d\n", arr[4]);//[] - 下标引用操作符 操作数有2个:arr , 4
//    return 0;
//}

//函数调用操作符

//int Add(int x, int y)
//{
//    return x + y;
//}
//
//int main()
//{
//    int a = 10;
//    int b = 20;
//    int ret = Add(a, b);//() - 函数调用操作符 操作数三个 Add a,b
//
//    return 0;
//}

//结构成员访问操作符
//结构体
//struct Book
//{
//    //成员变量
//    char name[20];
//    char id[20];
//    int price;
//
//};
//int main()
//{
//    struct Book b = { "c语言","c20220402",55 };
//    //printf("书名:%s\n", b.name);
//    //printf("书号:%s\n", b.id);//点操作符 结构体名.成员名
//    //printf("价格:%d\n", b.price);
//    struct Book * pb = &b;
//    printf("书名:%s\n", pb->name);
//    printf("书号:%s\n", pb->id);//结构体指针->成员名
//    printf("价格:%d\n", pb->price);
//    return 0;
//}

//表达式求值
//整形提升
//int main()
//{
//    char a = 3;
//    //00000000000000000000000000000011
//    //00000011
//    char b = 127;
//    //00000000000000000000000001111111
//    //01111111
//    char c = a + b;
//    //00000000000000000000000000000011
//    //00000000000000000000000001111111
//    //11111111111111111111111110000010
//    // 10000010 截断
//    //发现a和b都是char类型,都没有达到int的大小,这里就会发生整形提升。
//    //
//    printf("%d\n", c); //11111111111111111111111110000010
//
//    return 0;
//}


int main()
{
    int a = 4;
    int b = 5;
    //int c = a + b * a;//优先级决定计算顺序
    int c = a + b + a;//优先级不起作用,结合性决定顺序
    return 0;
}

举报

相关推荐

0 条评论