关于C语言操作符知识的总结

C语言操作符知识总结

一、算数操作符

加(+)、减(-)、乘(*)、除(\)、取余(%)

1、除了%操作以外,其他几个操作符可以作用于整数和浮点数;
2、对于\操作符,如果两个操作符都为整数,执行整数除法,只要有浮点型就执行浮点型除法;
3、%操作符的两个操作数必须为整数,返回的是整除之后的余数。

二、位移操作符

1、左位移操作符(<<)

位移规则:左边抛弃,右边补0

这里写图片描述

2、右位移操作符(>>)

位移规则:
(1)、逻辑位移:左边用0填充,右边丢弃;

这里写图片描述

(2)、算数位移:左边用原值的符号填充,右边丢弃;

这里写图片描述

注意:进行位移操作后,不改变原值的大小
例如:n>>1之后,n的值不变,只有n=n>>1;n的值才会发生变化;
警告:对于位移运算符,不要位移负数位,这个是标准未定义的
int num = 10;
num >> -1;//error

三、位操作符

& :按位与(对应的二进制数均为1时结果位为1 ,否则为0)

| :按位或(对应的二进制位有一个为1时,结果位就为1,两个都是零时结果为零)

^ : 按位异或(对应二进制位相同为0,不同为1)

注意:他们的操作数必须是整数
#include <stdio.h>
int main()
{
    int num1 = 1;
    int num2 = 2;
    num1 & num2;
    num1 | num2;
    num1 ^ num2;
    return 0;
}

四、赋值操作符

赋值操作符可以让你得到一个你之前不满意的值,也就是可以重新赋值
例如:
    int wight = 180//不满意
    wight = 89;重新赋值
复合赋值符
+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=;
例如:
    int x = 10;
    x = x + 10;
    x += 10;//复合赋值,其他运算符道理一样,这样写更加简洁

五、单目操作符

!:逻辑取反

-:负值

+:正值

&:取地址

sizeof:操作符的类型长度(以字节为单位)

关于sizeof:
//(1)
    int a[5];
    sizeof (a) = sizeof a;//说明sizeof不是函数,而是单目操作符
//(2)
    int s = 3;
    int a = 10;
    sizeof (s = a + 3);
    printf ("%d",s);//结果s = 3   
用于求变量(类型)所占字节大小

~:对一个数的二进制按位取反

- -:前置、后置- -

++:前置、后置++

*:间接访问操作符(解引用操作符)

(类型):强制类型转换

六、关系操作符

>、<、>=、<=、!=(用于测试不相等)、==(用于测试相等)

警告:在编程的过程中==和=不小心写错,会导致程序结果错误

七、逻辑操作符

逻辑与(&&)、逻辑或(||)

区分逻辑与和按位与:
1&2 ------> 0
1&&2 -----> 1
区分逻辑或和按位或
1|2 ------->3
1||2 ------>1

八、条件操作符

exp1 ? exp2 : exp3;

若exp1为真,则结果为exp2;
若exp1为假,则结果为exp3;
    if (a > 5)
    {
        b = 3;
    }
    else
    {
        b = -3;
    }
    //相当于
    (a > 5) ? 3 : -3;

九、逗号表达式

逗号表达式就是用逗号隔开的多个表达式

逗号表达式从左向右依次执行,整个表达式的结果是最后一个表达式的结果。例如:

    int a = 3;
    int b = 2;
    int c = (a>b, a=b+10, a, b=a+1);//c = 13

十、下标引用、函数调用和结构成员

1、操作数:一个数组名+一个索引值

int arr[10];//创建数组
arr[9] = 10;//下标引用操作符
//[]的两个操作数就是 9 和 arr 

2、函数调用操作符

接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

3、访问一个结构体的成员

. : 结构体 . 成员名
-> : 结构体指针 -> 成员名
struct Stu
{
    char name[10];
    int age;
    char sex[5];
    double score;
};
int main()
{
    struct Stu stu;
    struct Stu *pstu;
    stu.age = 20;
    pstu -> age = 20;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值