C语言操作符(总结)

操作符 分类:

        算术操作符
        移位操作符
        位操作符
        赋值操作符
        复合赋值操作符
        单目操作符
        关系操作符
        逻辑操作符
        条件操作符
        逗号操作符
        下标引用、函数调用和结构成员

算术操作符

操作符功能
+
-
*
/
%求余数(取模)
  1. 加、减、乘很简单,和平常数学中运算规则相同。
  2. /(除)这个操作符需要注意的是:除的时候如果’/’两边只要有(一个或两个)浮点数,采用的是浮点型除法,若’/’两边都是整型,则采用的是整型除法。
  3. %这个操作符两边的数只能是整数,它返回的是整除之后的余数

移位操作符

操作符功能
<<左移操作符
>>右移操作符
  1. 移位操作符作用的对象是一个数的补码;
  2. 对于左移:左边抛弃,右边补0;
  3. 对于右移:右边抛弃,左边补原来的符号位(采用算术移位);
  4. 对于’>>’操作符,分为两种移位规则:一种逻辑移位,另一种是算术移位,
    a.逻辑移位规则是右边抛弃,左边最高位直接补0,不考虑之前数的符号位。
    b.算术移位规则是右边抛弃,左边最高位补和之前数相同的符号位。而目前编译器通常采用的是算术移位规则。
  5. 但这里需要注意,对一个数移位操作完成后,当前的数不会改变的,除非把它赋值给另外一个变量。
  6. 对于移位操作符,不要移动负数位,这个是标准未定义的。
int main()
{
    int p=0,q=0,n=2;
    p=n<<1;
    printf("%d",p);
    q=n>>1;
    printf("%d",q);
}

此时输出的结果为:p=4,q=1;左移操作相当于给之前的数乘2,右移操作相当于给之前的数除2;
这里有一个思考题:求一个整数存储在内存中的二进制中1的个数。

位操作符

操作符功能
&按位与
按位或
^按位异或

1.同样这里位操作符作用的对象也是一个数的补码,并且它们的操作数必须是整数。
2.对于’&’,两个数补码对应位置的值都为1,结果为1,否则为0;对于’|’,两个数补码对应位置都是0,结果是0,否则为1;
问题:不能创建临时变量(第三个变量),实现两个数的交换

赋值操作符

操作符功能
=给一个变量赋值

这里需要注意的是为了代码方便理解和调试,赋值时不要连续赋值。

复合赋值符

操作符功能
+=相加之后赋值
-=相减之后赋值
*=相乘之后赋值
/=相除之后赋值
%=取余之后赋值
>>=右移之后赋值
<<=左移之后赋值
=按位或之后赋值
^=按位与之后赋值

用复合操作符可以使代码更简洁。

单目操作符

操作符功能
逻辑反操作
+正值
-负值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位整体取反
前置、后置–
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换

1. sizeof操作符计算的是变量(类型)所占空间的大小,是按字节来计算,重要的是,sizeof (a+b)里面的表达式不参与计算,若a,b都是int行类型,其结果依然是4;
2. 当数组作为参数为函数传参时,由于数组要发生降级,其会降级为一个指针,如果此时在一个函数中sizeof计算数组的大小是不可以的,其计算的是数组降级为指针的大小(4个字节),所以,若函数要得到一个数组的大小,应该在主函数中计算。
3. 对于前置++或 - -,先操作,再使用,对于后置++或 - -,先使用,再操作。

关系操作符

操作符功能
>大于
>=大于等于
<小于
<=小于等于
!=不等于
==等于

这些关系操作符,比较简单,不多说,但需要注意,不要将等于(==)写成赋值操作(=)。

逻辑操作符

操作符功能
&&逻辑与
丨丨逻辑或

不同与按位与和按位或。

条件操作符

操作符功能
exp1?exp2:exp3exp1为真,结果为exp2,否则结果是exp3

逗号操作符

操作符功能
exp1,exp2,…expN从左往右依次执行,整个表达式结果是最后一个表达式的结果
int main()
 {
    int a = 1; int b = 2; 
    int c = (a>b, a=b+10, a, b=a+1);
    printf("%d",c);
    return 0;
 }  //结果是13

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

操作符功能
[ ]数组下标操作符,操作数:数组名+一个索引值
( )函数调用操作符,接受一个或多个操作数:第一个是函数名,其余是函数参数
. 访问结构体成员
->访问结构体成员
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值