C语言-----------操作符详解

                                                                                                                   我们终会闪耀的像VVS

C语言操作符详解

摘要:本文旨在为C语言新手详细介绍C语言中的各种操作符。通过深入讲解不同类型操作符的功能、用法及优先级,帮助读者更好地理解和运用操作符进行程序设计,为进一步掌握C语言编程打下坚实基础。

 一、引言


在C语言编程中,操作符是构建表达式和执行各种运算的基础元素。正确理解和熟练使用操作符对于编写高效、准确的代码至关重要。本文将介绍C语言中常见的操作符及其特性。在之前的c语言的学习中我们以较熟练的掌握了算术操作符,赋值操作符,关系操作符,逻辑操作符,自增和自减操作符但位操作符我们之前运用较少本章着重介绍

 二、算术操作符

1. 加法操作符(+):用于两个数值的相加运算。例如:

int a = 5;
int b = 3;
int sum = a + b;  // sum的值为8


2. 减法操作符(-):实现两个数值相减。示例如下:

int c = 10;
int d = 4;
int difference = c - d;  // difference的值为6


3. 乘法操作符(*):执行乘法运算。代码示例:

int e = 2;
int f = 7;
int product = e * f;  // product的值为14


4. 除法操作符(/):进行除法运算。需要注意的是,如果是两个整数相除,结果将是整数部分。例如:

int g = 10;
int h = 3;
int quotient = g / h;  // quotient的值为3


5. 取模操作符(%):求两个整数相除的余数。示例:

int i = 11;
int j = 4;
int remainder = i % j;  // remainder的值为3

 三、赋值操作符


赋值操作符(=)用于将右边表达式的值赋给左边的变量。例如:

int num;
num = 15;  // 将15赋给变量num

此外,还有一些复合赋值操作符,如 +=、-=、*=、/=、%=等。以 += 为例:

int k = 5;
k += 3;  // 等价于k = k + 3,此时k的值为8

 四、关系操作符

1. 大于(>):比较两个值,判断左边的值是否大于右边的值。例如:

int m = 7;
int n = 4;
if (m > n) {
    printf("m大于n\n");
}


2. 小于(<):判断左边的值是否小于右边的值。示例:

if (m < n) {
    printf("m小于n\n");
}


3. 大于等于(>=):判断左边的值是否大于或等于右边的值。
4. 小于等于(<=):判断左边的值是否小于或等于右边的值。
5. 等于(==):注意与赋值操作符(=)的区别,它用于判断两个值是否相等。例如:

if (m == n) {
    printf("m等于n\n");
}


6. 不等于(!=):判断两个值是否不相等。

 五、逻辑操作符

1. 逻辑与(&&):只有当两个操作数都为真(非零)时,结果才为真(1),否则为假(0)。例如:

int p = 5;
int q = 0;
if (p && q) {
    printf("p和q都为真\n");
} else {
    printf("p和q至少有一个为假\n");
}


2. 逻辑或(||):只要两个操作数中有一个为真(非零),结果就为真(1),否则为假(0)。
3. 逻辑非(!):对一个操作数取反,若操作数为真(非零),则结果为假(0);若操作数为假(0),则结果为真(1)。例如:

int r = 10;
if (!r) {
    printf("r为假\n");
} else {
    printf("r为真\n");
}


 

六、位操作符(重点)

6.1补充知识:

位操作符主要是针对二进制数进行操作的。在计算机中,数据最终都以二进制形式存储。位操作符直接对数据所对应的二进制位进行运算,int类型是使用位操作符时较为常见的操作对象,那么我们就要清楚整形如和用二进制数存储

6.1.1原码,反码,补码:

原码、反码和补码是计算机中表示有符号整数的三种编码方式。理解它们对于深入掌握计算机的数值运算和存储机制非常重要,下面分别介绍这三个知识点:

6.1.1.1原码

定义:原码是一种简单直观的机器数表示法。对于有符号数,最高位为符号位,“0”表示正数,“1”表示负数,其余各位表示数值的绝对值。
举例:以8位二进制数为例:
    - 整数 +5 的原码是 `00000101`,最高位 0 表示正数,后面 7 位 `0000101` 是 5 的二进制表示。
    - 整数 -5 的原码是 `10000101`,最高位 1 表示负数,后面 7 位 `0000101` 是 5 的二进制表示。
特点:
    - 原码表示简单,与真值的转换直观。
    - 但是在进行加减法运算时比较复杂,因为要根据两个数的符号来确定是做加法还是减法,以及结果的符号。例如,正数加负数,需要比较两个数绝对值的大小,然后用大的绝对值减去小的绝对值,再确定结果的符号。

6.1.1.2反码

定义:反码的表示方法是正数的反码与原码相同,负数的反码是在其原码的基础上,符号位不变,其余各位取反。
举例:同样以8位二进制数为例:
    - 正数 +5 的反码与原码一样,是 `00000101`。
    - 负数 -5 的原码是 `10000101`,其反码是 `11111010`,即符号位 1 不变,其余 7 位 `0000101` 逐位取反。
特点:
    - 反码在一定程度上简化了加减法运算,特别是在早期计算机硬件设计中。
    - 但反码存在两个 0 的表示形式,即 `00000000` 表示 +0,`11111111` 表示 -0,这在运算和存储管理上会带来不便。

3.1.1.3补码

定义:补码的表示规则为正数的补码与原码相同,负数的补码是在其反码的基础上加 1。
举例:还是以8位二进制数为例:
    - 正数 +5 的补码与原码相同,为 `00000101`。
    - 负数 -5 的原码是 `10000101`,反码是 `11111010`,补码则是在反码基础上加 1,即 `11111010 + 1 = 11111011`。
特点:
    - 补码的最大优势在于它将减法运算转化为加法运算。在计算机中,只需实现加法器电路,就可以通过补码进行减法运算,大大简化了硬件设计。例如计算 `5 - 3`,可以转化为 `5 + (-3)`,在补码表示下,就是 `00000101 + 11111101`(-3的补码),最终得到正确结果 `00000010`(即 2)。
   

6.2总结:

1.为了方便计算机计算在现代计算机系统中,有符号整数通常以补码形式存储,而无符号整数则直接以其二进制形式存储。


   


1. 按位与(&):对两个整数的二进制位进行与操作。例如:
c

int x = 5;  // 二进制为0101
int y = 3;  // 二进制为0011
int result1 = x & y;  // 结果为0001,即1


2. 按位或(|):对两个整数的二进制位进行或操作。
3. 按位异或(^):对两个整数的二进制位进行异或操作(相同为0,不同为1)。
4. 按位取反(~):对一个整数的二进制位取反。
5. 左移(<<):将一个整数的二进制位向左移动指定的位数,右边补0。例如:

int z = 2;  // 二进制为0010
int shifted = z << 2;  // 左移2位后为1000,即8


6. 右移(>>):将一个整数的二进制位向右移动指定的位数,对于无符号数,左边补0;对于有符号数,左边补符号位。

七、自增和自减操作符


1. 前置自增(++i):先将变量的值加1,然后再使用变量的值。例如:
 

int a1 = 5;
int b1 = ++a1;  // a1先加1变为6,然后b1的值为6


2. 后置自增(i++):先使用变量的值,然后再将变量的值加1。例如:
 

int a2 = 5;
int b2 = a2++;  // b2先取a2的值5,然后a2再加1变为6


3. 前置自减(--i):先将变量的值减1,然后再使用变量的值。
4. 后置自减(i--):先使用变量的值,然后再将变量的值减1。

八、操作符优先级


操作符的优先级决定了表达式中操作符的执行顺序。例如,乘法和除法的优先级高于加法和减法。在复杂表达式中,使用括号可以改变操作符的执行顺序,提高代码的可读性和准确性。例如:
 

int result = (2 + 3) * 4;  // 先计算括号内的2 + 3,再乘以4,结果为20


 

 九、总结


C语言中的操作符丰富多样,每种操作符都有其特定的功能和用法。在编写代码时,需要根据具体需求正确选择和使用操作符,并注意操作符的优先级。通过不断练习和实践,读者可以熟练掌握操作符的使用技巧,编写出高质量的C语言程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值