首页 > 其他分享 >C语言入门(5)--运算符

C语言入门(5)--运算符

时间:2024-10-27 11:17:48浏览次数:3  
标签:示例 -- C语言 运算符 int printf Line 赋值

C语言运算符

运算符是C语言中用于执行特定数学或逻辑操作的符号。C语言提供了丰富的运算符,了解这些运算符及其用法是咱们编写程序的基础。

1. 算术运算符

算术运算符用于执行基本的数学运算,如加、减、乘、除等。

运算符描述示例
+加法A + B 将得到 30
-减法A - B 将得到 -10
*乘法A * B 将得到 200
/除法B / A 将得到 2
%取模B % A 将得到 0
++自增A++ 将得到 11
--自减A-- 将得到 9
示例代码
#include <stdio.h>

int main() {
    int a = 21;
    int b = 10;
    int c;

    c = a + b;
    printf("Line 1 - c 的值是 %d\n", c);
    c = a - b;
    printf("Line 2 - c 的值是 %d\n", c);
    c = a * b;
    printf("Line 3 - c 的值是 %d\n", c);
    c = a / b;
    printf("Line 4 - c 的值是 %d\n", c);
    c = a % b;
    printf("Line 5 - c 的值是 %d\n", c);
    c = a++;
    printf("Line 6 - c 的值是 %d\n", c);
    c = a--;
    printf("Line 7 - c 的值是 %d\n", c);

    return 0;
}
2. 关系运算符

关系运算符用于比较两个值之间的关系,返回值为真(1)或假(0)。

运算符描述示例
==等于(A == B) 为假
!=不等于(A != B) 为真
>大于(A > B) 为假
<小于(A < B) 为真
>=大于等于(A >= B) 为假
<=小于等于(A <= B) 为真
示例代码
#include <stdio.h>

int main() {
    int a = 21;
    int b = 10;

    if (a == b) {
        printf("Line 1 - a 等于 b\n");
    } else {
        printf("Line 1 - a 不等于 b\n");
    }
    if (a < b) {
        printf("Line 2 - a 小于 b\n");
    } else {
        printf("Line 2 - a 不小于 b\n");
    }
    if (a > b) {
        printf("Line 3 - a 大于 b\n");
    } else {
        printf("Line 3 - a 不大于 b\n");
    }
    a = 5;
    b = 20;
    if (a <= b) {
        printf("Line 4 - a 小于或等于 b\n");
    }
    if (b >= a) {
        printf("Line 5 - b 大于或等于 a\n");
    }

    return 0;
}
3. 逻辑运算符

逻辑运算符用于执行逻辑操作,如与、或、非等。

运算符描述示例
&&逻辑与(A && B) 为假
!逻辑非!(A && B) 为真
示例代码
#include <stdio.h>

int main() {
    int a = 5;
    int b = 20;

    if (a && b) {
        printf("Line 1 - 条件为真\n");
    }
    if (a || b) {
        printf("Line 2 - 条件为真\n");
    }
    a = 0;
    b = 10;
    if (a && b) {
        printf("Line 3 - 条件为真\n");
    } else {
        printf("Line 3 - 条件为假\n");
    }
    if (!(a && b)) {
        printf("Line 4 - 条件为真\n");
    }

    return 0;
}
4. 位运算符

位运算符用于对二进制位进行操作,如按位与、按位或、按位异或等。

运算符描述示例
&按位与(A & B) 将得到 12
^按位异或(A ^ B) 将得到 49
~按位取反(~A) 将得到 -61
<<左移A << 2 将得到 240
>>右移A >> 2 将得到 15
示例代码
#include <stdio.h>

int main() {
    unsigned int a = 60;  // 60 = 0011 1100
    unsigned int b = 13;  // 13 = 0000 1101
    int c = 0;

    c = a & b;
    printf("Line 1 - c 的值是 %d\n", c);
    c = a | b;
    printf("Line 2 - c 的值是 %d\n", c);
    c = a ^ b;
    printf("Line 3 - c 的值是 %d\n", c);
    c = ~a;
    printf("Line 4 - c 的值是 %d\n", c);
    c = a << 2;
    printf("Line 5 - c 的值是 %d\n", c);
    c = a >> 2;
    printf("Line 6 - c 的值是 %d\n", c);

    return 0;
}
5. 赋值运算符

赋值运算符用于将值赋给变量。

运算符描述示例
=简单赋值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
`=`按位或且赋值
示例代码
#include <stdio.h>

int main() {
    int a = 21;
    int c;

    c = a;
    printf("Line 1 - = 运算符实例,c 的值 = %d\n", c);
    c += a;
    printf("Line 2 - += 运算符实例,c 的值 = %d\n", c);
    c -= a;
    printf("Line 3 - -= 运算符实例,c 的值 = %d\n", c);
    c *= a;
    printf("Line 4 - *= 运算符实例,c 的值 = %d\n", c);
    
    return 0;
}
5 - /= 运算符实例,c 的值 = %d\n", c);
    c = 200;
    c %= a;
    printf("Line 6 - %= 运算符实例,c 的值 = %d\n", c);
    c <<= 2;
    printf("Line 7 - <<= 运算符实例,c 的值 = %d\n", c);
    c >>= 2;
    printf("Line 8 - >>= 运算符实例,c 的值 = %d\n", c);
    c &= 2;
    printf("Line 9 - &= 运算符实例,c 的值 = %d\n", c);
    c ^= 2;
    printf("Line 10 - ^= 运算符实例,c 的值 = %d\n", c);
    c |= 2;
    printf("Line 11 - |= 运算符实例,c 的值 = %d\n", c);

    return 0;
}
6. 杂项运算符

C语言还支持一些其他的运算符,如 sizeof? :

运算符描述示例
sizeof()返回变量的大小sizeof(a) 将返回 4
&返回变量的地址&a; 将给出变量的实际地址
*指向变量*a; 将指向一个变量
? :条件表达式如果条件为真 ? 则值为 X : 否则值为 Y
示例代码
#include <stdio.h>

int main() {
    int a = 4;
    short b;
    double c;
    int* ptr;

    printf("Line 1 - 变量 a 的大小 = %lu\n", sizeof(a));
    printf("Line 2 - 变量 b 的大小 = %lu\n", sizeof(b));
    printf("Line 3 - 变量 c 的大小 = %lu\n", sizeof(c));

    ptr = &a;
    printf("a 的值是 %d\n", a);
    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;
}
7. 运算符优先级

运算符优先级决定了表达式中各个运算符的计算顺序。了解这些优先级对于正确理解和编写复杂表达式至关重要。

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

int main() {
    int a = 20;
    int b = 10;
    int c = 15;
    int d = 5;
    int e;

    e = (a + b) * c / d;
    printf("(a + b) * c / d 的值是 %d\n", e);

    e = ((a + b) * c) / d;
    printf("((a + b) * c) / d 的值是 %d\n" , e);

    e = (a + b) * (c / d);
    printf("(a + b) * (c / d) 的值是 %d\n", e);

    e = a + (b * c) / d;
    printf("a + (b * c) / d 的值是 %d\n" , e);

    return 0;
}

掌握这些运算符及其优先级对于咱们编写高效、清晰的程序至关重要。

关于C语言运算符的内容,咱们到这告一段落。

希望能对你有帮助。

下期见!

标签:示例,--,C语言,运算符,int,printf,Line,赋值
From: https://blog.csdn.net/Chen7Chan/article/details/143260387

相关文章

  • C语言入门(6)--控制结构
    C语言控制结构控制结构是C语言中用于控制程序执行流程的基本机制。主要包括顺序结构、选择结构和循环结构。1.顺序结构顺序结构是程序中最基本的控制结构,按照代码的书写顺序从上到下依次执行。示例代码#include<stdio.h>intmain(){printf("第一行\n");......
  • 【毕业设计】基于Springboot + Vue的城市垃圾分类管理系统
    随着城市化进程的加快,城市垃圾的处理与分类成为了社会关注的重点。传统的垃圾管理方式通常依赖于人工分拣和纸质记录,这种方式不仅效率低下,还容易产生信息记录错误和数据丢失的情况。因此,开发一个智能化的城市垃圾分类管理系统显得尤为重要。本文将介绍基于SpringBoot开发的城市......
  • 学生宿舍管理信息化:Spring Boot系统研究
    3系统分析3.1可行性分析通过对本学生宿舍信息管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本学生宿舍信息管理系统采用SpringBoot框架,JAVA作为开发语言,是......
  • Spring Boot助力学生宿舍信息管理自动化
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 数组指针的相关知识
    1.数组指针的概念    1.顾名思义,数组指针就是指向数组的指针(地址),要和指针数组做区分。    数组指针:类型为int(*)[常量],是一个地址。    指针数组:是由int*类型之类的指针为元素的数组,是一个数组。    2.数组指针指向的是整一个数组,而非......
  • 【毕业设计】基于SpringBoot + Vue的扶贫助农系统
    在当今数字化时代,信息技术的快速发展为各个领域带来了新的机遇和挑战。特别是在扶贫助农领域,传统的管理方法往往面临效率低、错误率高、检索困难等问题。为了提高扶贫助农信息的管理效率,本文介绍了一个基于SpringBoot框架开发的扶贫助农系统。1.为什么需要一个扶贫助农系统?......
  • 2024CSP游记
    希望这次JS都1=rp++DAY018:00出发去莆田(为什么不是福州,明明福州更近)19:15基本复习完了DAY1普及组考试时30min口胡了一下最后一题,感觉是构建fail树之后跑一下所有可能的结果\(O(r\suml)\)但是听大佬们说是DP,还好没写,只写了个暴力嘻嘻期望得分:\(100+100+100......
  • C项目要怎么缩短编译时间
    在处理C项目时,为缩短编译时间可以采取以下措施:1.优化代码结构,减少不必要的编译依赖;2.使用并行编译技术;3.优化编译器设置;4.利用增量编译和预编译技术;5.合理配置硬件资源。通过这些方法,我们可以显著减少C项目的编译时间,从而提高开发效率。1.优化代码结构项目的代码结构是影响编......
  • CSP-S2024游记
    Day998244351/998244352打板子~40个。(但是一个都没用上)Day1带了三包饼干和一瓶水,准备做不出来就吃吃吃。开考前5分钟。先把模板敲好了。大样例有60M?下发的pdf密码文件是错的,但是半分钟没人有反应。监考:“把选手文件夹建在桌面”(使用的是NOILinux),然后被询问是不......
  • NTT
    NTT线性卷积定义:\[(f*g)[i]=\sum_{j=0}^{i}f[j]\cdotg[i-j]\]卷积定理:\[\mathcal{F}(f*g)=\mathcal{F}(f)\cdot\mathcal{F}(g)\]于是,求线性卷积可以转化为,先变换,再直接相乘,最后逆变换。注意:序列长度须变成N+M-1,对齐2^k。循环卷积(圆周卷积)一般用于两个等长序......