c语言操作符

#define _CRT_SECURE_NO_WARNINGS 1 

//操作符
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

//                                                       算术操作符    
// + -  *  %  /         %操作符的两边必须为整数,输出的是除法之后的余数
//int main()
//{
//    //int a = 3 / 5;   //两边都是整数,商0余3  因此他的结果是0
//    //printf("%d", a);    
//    //如果想得到小数,就可以如下操作
//    /*float a = 3.0 / 5;
//    printf("%f", a);*/
//    return 0;
//}

//                                        移位操作符
//int main()
//{
//    int a = 2;  //2在二进制里是00000000000000000000000000000010
//               //向左移动一位是00000000000000000000000000000100    数字变成了4
//    int b = a << 1;
//    printf("b=%d", b);
//    return 0;
//}

//int main()
//{
//    int a = 10;  //2在二进制里是0000000000000000000000000001010
//               //向右移动一位是00000000000000000000000000000101    数字变成了5
//    int b = a >> 1;
//    printf("b=%d", b);
//    return 0;
//}
// 算数右移:右边丢弃,左边补原来的符号位    通常都是算数右移
// 逻辑右移:右边丢弃,左边补0
// 算数右移和逻辑右移
// 
// 
//                                          位操作符
//    &与  |或  ^异或    必须都是整数
//对于正整数来说,原码,反码和补码相同
//int main()
//{
//    //int a = 3;
//    //int b = 5;
//    //int c = a & b;   //按二进制位进行与
//    //00000000000000000000000000000011 
//    //00000000000000000000000000000101  
//    //00000000000000000000000000000001   因此 c就等于1
//
//    /*int a = 3;
//    int b = 5;
//    int c = a | b;
//    printf("c=%d", c);*/   //按二进制位进行或
//    //00000000000000000000000000000011 
//    //00000000000000000000000000000101  
//    //00000000000000000000000000000111    因此c就等于7
//
//    //int a = 3;
//    //int b = 5;
//    //int c = a ^ b;
//    //printf("c=%d", c);  //按二进制位进行异或   异或的计算规则是,相同为0,相异为1   
//    //00000000000000000000000000000011 
//    //00000000000000000000000000000101  
//    //00000000000000000000000000000110    因此c就等于6
//    return 0;
// }

//整型有最大值,如果数值太大会溢出
//交换a和b,但不允许采用第三个变量
//int main()
//{
//    int a = 3;
//    int b = 5;
//    //第一种方法:如果a和b很大就会溢出
//    /*a = a + b;
//    b = a - b;
//    a = a - b;*/
//
//    //第二种方法     a=011  b=101
//    a = a ^ b;      //a=110   b=101
//    b = a ^ b;      //a=110   b=011
//    a = a ^ b;      //a=101   b=011
//
//    return 0;
//}

//编码实现:寻找一个整数在内存中的二进制位代码中有几个1     内存中以补码形式存放


//赋值操作符    =   +=   -=   *=    /=   >>=   <<=  %=    |=  &=    ^=  ~
     //连续赋值  (不建议连续赋值)   a=x=y-1  y-1的值赋给x,然后把x赋给a

//单目操作符
///   !  +   -    &  sizeof()   ++  --  *  
//int [10]  是数组类型
//int main()
//{
//    short s = 5;
//    int a = 10;
//    printf("%d", sizeof(s = a + 2));   //sizeof中的表达式不参与运算
//    printf("%d", s);
//    return 0;
//}

   //~对一个数的二进制位进行取反
//int main()
//{
//    int a = -1;
//    //1000000000000000000000000000000001原码
//    //1111111111111111111111111111111110 反码
//    //1111111111111111111111111111111111  补码
//    //~按位取反
//    //1111111111111111111111111111111111
//    //0000000000000000000000000000000000
//    int b = ~- 1;
//    printf("%d\n", a);
//
//    printf("%d", b);
//    return 0;
//}

//++  --这两个操作符都有前置或者后置操作
//int main()
//{
//    //int a = 10;
//    //int b = a++;    //使用这个后置++  ,如果这个时候输出a和b,,,那么b等于10   a等于11   先使用后++
//    //int c = ++a;     //如果这个时候输出a和b,,,,先++  后使用
//
//    int a = 10;
//    printf("%d", a--);   //10
//    printf("%d", a);     //9    因为a自减了,所以这个就是9
//
//
//    return 0;
//}

//int main()    ///地址的大小就是4或者8,看看是三十二位还是六十四位
//{
//    int a = 0;
//    printf("%p\n", & a);   //取地址,地址是一个十六进制的内存编号
//    int*pa = &a;  //用来存放地址,pa就是一个指针变量   他的类型是int*
//    *pa=20;   //*这个*叫做解引用操作符,--间接引用操作符
//    printf("%d", a);   
//
//    return 0;
//}


//关系操作符--------用来比较大小,,,需要注意,一个等号叫赋值,两个等号来判断想不想等,,,,比较两个字符串相等不能使用等号
// >     >=     <    <=     !=     ==

//逻辑操作符
//int main()
//{
//    int i = 0, a = 0, b = 2, c = 3, d = 4;
//   // i = a++ && ++b && d++;   //在这个&&操作符上面来说,第一个都已经为假了,其他的就已经不用算了  
//   // printf("a=%d\nb=%d\nc=%d\d=%d", a, b, c, d);   //  1,2,3,4
//
//    i=a++||++b||d++;    //a为真后面都不用算了
//    printf("a=%d\nb=%d\nc=%d\d=%d", a, b, c, d);
//    return 0;
//}

//条件操作符
//三目操作符    exp1?exp2:exp3   //如果表达式1成立,则结果为表达式2,否则是表达式3
//int main()
//{
//    int a = 3;
//    int b = 0;
//    if (a > 5)
//        b = 1;
//    else
//        b = -1;
//    //三目操作符    b = a > 5 ? 1 : -1      
//    return 0;
//}

//逗号表达式
// exp1,exp2,exp3,。。。。expN;

//int main()
//{
//    int a = 3;
//    int b = 5;
//    int c = 0;
//    int d = (c = 5, a = c + 3, b = a - 4, c += 5);   //结果是最后一个表达式,但是前面的表达式也要依次计算
//    //逗号表达式:要从左向右依次计算,但整个表达式的结果是最后一个表达式的结果
//
//    return 0;
//}

//下标引用操作符
//[]这个方括号就是下标引用操作符


//函数调用操作符
//()---函数调用操作符,,他的操作数分别是函数名,和参数

//结构成员访问操作符
// .
// ->
//结构体
//struct Book
//{
//    //结构体成员变量
//    char name[20];
//    int price;
//    char number;
//};
//int main()
//{
//    int num = 10;//普通类型的使用方式
//    struct Book b = {"cyuyan",123654,"c2001220"};
//    //printf("数名:%s\n", b.name);
//    //printf("数hao:%d\n", b.price);
//
//    struct Book* pb = &b;  //结构体的地址访问
//    printf("数名:%s\n", (*pb).name);   //解引用找到了b
//
//    printf("数hao:%d\n", pb->price);   //结构成员操作符的另一个应用   :结构体的指针->结构体成员名
//
//    return 0;
//}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值