3、C语言:运算符

运算符

  • 算术运算符

    符号说明优先级结合性用法
    +单目取正14从右到左a=+8
    -单目取负14从右到左b=-a
    *13从左到右a=12*5.5
    /整除,若有一个是负数,采取向0取整
    例如
    9/2=4
    -9/2=-4
    1/2=0
    1.0/2=0.5
    13从左到右b=14/6.5
    %取余,只能用于两个整数运算
    结果符号与被除数一致
    如果被除数小于除数,结果即为被除数
    13从左到右c=12%5
    +12从左到右a=12+5.5
    -12从左到右b=12-5.5
  • 关系运算符
    假设变量 A 的值为 10,变量 B 的值为 20,则:

    运算符描述实例
    ==检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 为假。
    !=检查两个操作数的值是否相等,如果不相等则条件为真。 (A != B) 为真。
    >检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) 为假。
    <检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (A < B) 为真。
    >=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (A >= B) 为假。
    <=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (A <= B) 为真。
  • 逻辑运算符
    假设变量 A 的值为 1,变量 B 的值为 0,则:

    运算符描述实例
    &&称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。
    ||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A || B) 为真。
    !称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(A && B) 为真。
  • 位运算符
    位运算符作用于位,并逐位执行操作。
    假设变量 A 的值为 60,变量 B 的值为 13,则:

    运算符描述实例
    &

    按位与操作,按二进制位进行"与"运算

    (A & B) 将得到 12,即为 0000 1100
    |

    按位或运算符,按二进制位进行"或"运算。

    (A | B) 将得到 61,即为 0011 1101
    ^

    异或运算符,按二进制位进行"异或"运算。

    (A ^ B) 将得到 49,即为 0011 0001
    ~

    取反运算符,按二进制位进行"取反"运算。

    (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
    <<二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 A << 2 将得到 240,即为 1111 0000
    >>二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 A >> 2 将得到 15,即为 0000 1111
  • 赋值运算符

    运算符描述实例
    =简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
    +=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
    -=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
    *=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
    /=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
    %=求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A
    <<=左移且赋值运算符 C <<= 2 等同于 C = C << 2
    >>=右移且赋值运算符 C >>= 2 等同于 C = C >> 2
    &=按位与且赋值运算符 C &= 2 等同于 C = C & 2
    ^=按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
    |=按位或且赋值运算符 C |= 2 等同于 C = C | 2
  • 自加自减运算符
    自增、自减运算符:++、–
    只能用于变量,不能用于常量或表达式
    前缀使用格式:++变量、–变量
    后缀使用格式:变量++、变量–
    当涉及到赋值的时候,前缀和后缀的使用方式有所不同
    假设 i=1,k=0,则:
    计算 k=++i 后,i=2,k=2
    计算 k=–i 后,i=0,k=0
    计算 k=i++ 后,i=2,k=1
    计算 k=i-- 后,i=0,k=1

  • 其他运算符

    运算符描述实例
    sizeof()返回变量的大小。sizeof(a) 将返回 4,其中 a 是整数。
    &返回变量的地址。&a; 将给出变量的实际地址。
    *指向一个变量。*a; 将指向一个变量。
    ? :条件表达式如果条件为真 ? 则值为 X : 否则值为 Y
    例子:
    #include <stdio.h>
    int main(){
    	int a = 4;
    	short b;
    	double c;
    	int* ptr;	// 指向一个整型变量
    	printf("变量a的大小=%u\n", sizeof(a));
    	printf("变量b的大小=%u\n", sizeof(b));
    	printf("变量c的大小=%u\n", sizeof(c));
    	
    	/* &和*涉及指针的知识 */
    	ptr = &a; 	// ptr现在包含a的地址
    	printf("a的值为%d\n", a);
    	printf("*ptr的值为%d\n", *ptr);
    	printf("ptr的值为%d\n", ptr);
    	
    	a = 10;
    	b = (a == 1) ? 20:30;
    	printf("b的值为%d\n", b);
    	b = (a == 10) ? 20:30;
    	printf("b的值为%d\n", b);
    	return 0;}
    

    运行结果:
    在这里插入图片描述

  • 逗号运算符和逗号表达式
    格式:表达式1, 表达式2, …, 表达式n
    求解顺序:从左到右依次求解
    结果:整个表达式的值为表达式n的值,类型为表达式n的类型
    例如:
    a=3*5, a*4,结果为60
    a=3*5, a*4, a+5,结果为20
    x=(a=4%3, a+1, a*10),结果为10

  • 运算符优先级和结合性

    下表将按运算符优先级从高到低列出各个运算符

    类别 运算符 结合性 
    后缀 () [] -> . ++ - -  从左到右 
    一元 + - ! ~ ++ - - (type)* & sizeof 从右到左 
    乘除 * / % 从左到右 
    加减 + - 从左到右 
    移位 << >> 从左到右 
    关系 < <= > >= 从左到右 
    相等 == != 从左到右 
    位与 AND 从左到右 
    位异或 XOR 从左到右 
    位或 OR 从左到右 
    逻辑与 AND && 从左到右 
    逻辑或 OR || 从左到右 
    条件 ?: 从右到左 
    赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左 
    逗号 从左到右 

常用数学库函数

调用数学函数时,源文件要包含头文件math.h,即#include <math.h>

常用函数写法
平方根函数sqrt(x)
绝对值函数fabs(x)
幂函数pow(x,n)
以e为底数的指数函数exp(x)
以e为底数的对数函数log(x)
三角函数sin(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值