C语言之运算符

news2024/9/23 17:19:08

C语言运算符

文末附运算符的优先表和ASCII表

一、算术运算符

  • 加(+)减(—)乘(*)除(/)
  • 模(余)运算符(%):不允许出现浮点型,余数正负取决于被除数正负
  • #include <stdio.h>
    int main() {
        int i, b, a, c;
        i= 4, b=3;
        a= i+b;
        c= i*a;
        float p, k;
        p= i/b;
        k= i%a;
        printf("a=%d,c=%d,p=%f,k=%f\n",a,c,p,k);
        return 0;
    }
    
    
  • 自增(++i,–i;i++,i–)
  • #include <stdio.h>
    int main() 
    {
        int i;
        i= 4;
        printf("%d\n",++i);
        return 0;
    }
    
    #include <stdio.h>
    int main() 
    {
        int i;
        i= 4;
        printf("%d\n",i--);
        //printf("%d\n",i); 
        return 0;
    }
    

二、关系运算符

  • 大于(>)小于(<)等于(==)
  • #include <stdio.h>
    int main()
     {
        int a, b, max;
        printf ("please enter a and b\n");
        scanf ("%d %d",&a, &b);
        if (a>b) max=a;
        if (a<b) max=b;
        if (a==b) max=a;
        printf ("max=%d\n",max);
        return 0;
    }
    
    
    
  • 小于或等于(<=)大于或等于(>=)不等于(!=)赋值(-=、+=、*=);
  • #include<stdio.h>
    int main()
    {
        int a = 10;
        a +=a *=a -=20;
        printf("%d\n",a);
    }
    
    #include <stdio.h>
    int main() 
    {
        int a, b, max;
        printf ("please enter a and b\n");
        scanf ("%d %d",&a, &b);
        if (a>=b) max=a;
        if (a<=b) max=b;
        printf ("max=%d\n",max);
        return 0;
    }
    
    #include <stdio.h>
    int main() 
    {
        int a, b, max;
        printf ("please enter a and b\n");
        scanf ("%d %d",&a, &b);
        if (a!=b);
        if (a>b) max=a;
        if (a<b) max=b;
        printf ("max=%d\n",max);
        return 0;
    }
    
    
    

三、逻辑运算符(并且、或者、除非)
优先级从上至下

  • 逻辑非
  • #include <stdio.h>
    int main() 
    {
        int num = 0;
        printf ("Please enter num value: ");
        scanf("%d", &num);
        if (num != 69) 
        {
           printf ("num %d is not equal to 69.\n", num);
        }
        return 0;
    }
    
    
    

  • 逻辑与
  • #include <stdio.h>
    int main() 
    {
        int a, b, x, y;
        printf ("please enter a and b,x and y\n");
        scanf ("a=%d,b=%d,x=%d,y=%d",&a, &b, &x, &y);
        if (a==b && x==y)
        {
        printf ("a=b,x=y\n");
        }
        else
        printf ("sorry,I donot konw.\n");
        return 0;
    }
    
    
    
  • 逻辑或
  • #include<stdio.h>
    int main()
    {
        int a = 1;
        int b = 0;
        printf("%d\n",a || (b++));
        printf("%d\n",b);
    }
    
    #include<stdio.h>
    int main()
    {
        int a = 0;
        int b = 0;
        printf("%d\n",a || (b++));
        printf("%d\n",b);
    }
    
    #include<stdio.h>
    int main()
    {
        int a = 0;
        int b = 0;
        printf("%d\n",a || (++b));
        printf("%d\n",b);
    }
    
    
  • &&和||的区别
​
#include<stdio.h>
int main(){
    printf("%d\n",1 && 1);
    printf("%d\n",0 && 1);
    printf("%d\n",0 && 0);

    printf("%d\n",1 || 1);
    printf("%d\n",0 || 1);
    printf("%d\n",0 || 0);

    return 0;
}

优先级:算术运算符>关系运算符>赋值运算符

四、位运算符

右移(>>)左移(<<)
按位与(&)
按位或(|)
按位异或(^)
取反(~)
五、赋值运算符

等号(=)
扩展赋值运算符
+= 加赋值 (a += 3 等价于 a = a + 3)
-= 减赋值
*= 乘赋值
/= 除赋值
%= 求余赋值
&= 按位与赋值
| = 按位或赋值
^= 按位异或赋值
<<= 左移位赋值(>>= 右移位赋值)
<> 当右操作数又是一个赋值表达式时,形成多重赋值表达式

六、条件运算符
条件运算符优先级高于赋值、逗号运算符,低于其他运算符。

  • 关系表达式 ? 表达式1 : 表达式2(当表达式多了后就先从右算到左)
    三目运算符:条件 ? 结果1 : 结果2(条件成立时,返回:号前的结果;不成立就返回后面的结果)
//例子:判断a小于或者大于b,输出最大值max
#include <stdio.h>
int main()
{
  int a, b, max;
  scanf("a=%d,b=%d",&a,&b);
  max=a>b?a:b;
  printf("max=%d\n",max);
  return 0;
}
#include<stdio.h>
int main()
{
    int a = 300;
    int b = 50;
    int c = a>b? 350: a<b? 360:370;
    printf("%d\n",c);
    return 0;
}
#include<stdio.h>
int main()
{
    int a = 50;
    int b = 300;
    int c = a>b? (b-a): a<b? (a+b):370;
    printf("%d\n",c);
    return 0;
}

七、逗号运算符

#include<stdio.h>
int main()
{
    int i = 1;
    int a = (i+100,i++,i);
    printf("%d\n",a);
    return 0;
}
#include<stdio.h>
int main()
{
    int i = 1;
    int a = (i=i+100,i++,i);
    printf("%d\n",a);
    return 0;
}

八、指针运算符

  • 指针变量
    定义:基类型 * 指针变量名;
    例子1:通过指针变量访问整型变量
#include <stdio.h>
int main() 
{
    int a, b; #定义两个int变量
    int * pointer_1, * pointer_2; #定义两个指针变量,指向int变量
    a = 100; b = 10;
    pointer_1 = &a; #把变量a的地址赋给指针pointer_1
    pointer_2 = &b;
    printf ("a = %d, b = %d \n", a, b);
    printf (" * pointer_1 = %d, * pointer_2 = %d \n", * pointer_1, * pointer_2); #输出的指针变量所指向的整型变量的值
    return 0;
}


九、求字节数运算符(sizeof)

  • 当sizeof(与数据类型(如int,float,char …等)一起使用时,返回分配给该数据类型的内存量。
#include<stdio.h>
int main()
{
    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(float));
    printf("%d\n", sizeof(double));
    return 0;
}
  • 当sizeof和表达式一起使用的时候,返回表达式的大小
#include<stdio.h>
int main() 
{
    int a = 1, b = 3;
    printf ("%d\n", sizeof ( a + b ));
    return 0;
}
    

十、强制类型转换运算符

例1:小数转整数

#include <stdio.h>
int main () 
{
    float f = 8.88;
    int i;
    i = (int) f;
    printf ("f = %f, i = %d \n", f, i);
    return 0;
}

例2:整数转小数

#include <stdio.h>
int main () 
{
    int maxsum = 123;
    printf ("%lf\n", (double) maxsum);
    return 0;
}

十一、成员运算符

  • 成员运算符
  • 间接成员运算符

十二、下标运算符([ ])

运算符的优先级和结合性

在这里插入图片描述

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这是一颗经过计划生育的树?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

Hadoop的shuffle过程及调优

MapReduce 中的Shuffle 发生在 map 输出到 reduce 输入的过程&#xff0c;它的中文解释是 “洗牌”&#xff0c;顾名思义该过程涉及数据的重新分配&#xff0c;主要分为两部分&#xff1a; map 任务输出的数据分组、排序&#xff0c;写入本地磁盘。reduce 任务拉取排序。 由于…

基于Java+Swing+Mysql实现人事管理信息系统

基于JavaSwingMysql实现人事管理信息系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.员工信息添加、删除4.员工信息查询、修改5.部门管理6、员工考核 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 系统功能&#xff1a;用户登陆、用户注册、员工信息添加、…

6.8object类equals tostring

2 什么是API API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件可以访问的一些功能集&#xff0c;但又无需访问源码或理解内部工作机制的细节. API是一种通用功能集,有时公…

基于Java+Swing+Mysql实现旅游管理信息系统

基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户&#xff1a;登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…

【ARIMA-SSA-LSTM】合差分自回归移动平均方法-麻雀优化-长短期记忆神经网络研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

数据库约束、表的关系

数据库约束、表的关系 数据库约束、表的关系 1. 数据库约束1.1 约束类型1.2 NULL约束1.3 UNIQUE&#xff1a;唯一约束1.4 DEFAULT&#xff1a;默认值约束1.5 PRIMARY KEY&#xff1a;主键约束1.6 FOREIGN KEY&#xff1a;外键约束 2. 表的设计2.1 一对一2.2 一对多2.3 多对多 …

ODOO16 ERP如何做标准的研发费用归集?

目前国家大力鼓励企业研发投入&#xff0c;并且给予很多鼓励。如《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》中明确提出&#xff1a;“发挥企业家在技术创新中的重要作用&#xff0c;鼓励企业加大研发投入&#xff0c;对企业投入基础研…

2023洗发护发市场分析(头皮清洁护理等新兴品类销售数据分析)

如今&#xff0c;随着人们消费观念的转变&#xff0c;对洗发护发相关用品的要求也逐渐提高&#xff0c;由原来单一的清洁功能到更注重洗发护发用品的功能及护理效果。因此&#xff0c;洗发护发产品的品类不断增加&#xff0c;洗发护发产品的市场规模也不断扩大&#xff0c;整体…

JAVA实现一个工作流引擎

介绍 工作流是一种将一系列相关的任务和活动组织起来的技术&#xff0c;以便在企业或组织中自动化或半自动化地管理业务流程。工作流技术可以帮助企业或组织更好地管理和优化业务流程&#xff0c;提高生产效率和质量&#xff0c;降低成本和风险。 JAVA作为一种面向对象编程语…

线程池与CompletableFuture 异步编排

使用线程池的好处&#xff1a; 1、降低资源的消耗 通过重复利用已经创建好的线程降低线程的创建和销毁带来的损耗 2、提高响应速度 因为线程池中的线程数没有超过线程池的最大上限时&#xff0c;有的线程处于等待分配任务 的状态&#xff0c;当任务来时无需创建新的线程就能执行…

STM32启动详细流程分析(一)

问题提出 大家不妨设想一下&#xff0c;cpu 的工作是什么&#xff0c;cpu 是没有主观意识的&#xff0c;它只会按照特定的指令执行相应的操作&#xff0c;用专业术语来说就是&#xff1a;取指 -> 译码 -> 执行&#xff0c;译码和执行肯定是在 cpu 内部进行操作的&#x…

MySQL数据库增删改查及聚合查询SQL语句学习汇总

目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table 查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查&#xff08;CRUD&#xff09;详细说明 增加 SQL库提供了关于时间的…

Python 查询 DynamoDB

文章目录 DynamoDB 简介Boto3简介安装和导入 Boto3将 Boto3 连接到 DynamoDB 使用 Boto3 在 DynamoDB 中创建表通过 Boto3 删除 DynamoDB 中的表通过 Boto3 列出 DynamoDB 中的表通过 Boto3 在 DynamoDB 中分页通过 Boto3 在 DynamoDB 中排序通过 Boto3 在 DynamoDB 中获取项目…

【设计模式与范式:行为型】63 | 职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?

上一节课&#xff0c;我们学习职责链模式的原理与实现&#xff0c;并且通过一个敏感词过滤框架的例子&#xff0c;展示了职责链模式的设计意图。本质上来说&#xff0c;它跟大部分设计模式一样&#xff0c;都是为了解耦代码&#xff0c;应对代码的复杂性&#xff0c;让代码满足…

Ribbon LoadBalanced底层机制源码探秘

&#x1f34a; Java学习&#xff1a;社区快速通道 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年6月18日 &#x1f34a; 点…

如何自己开发浏览器js插件

大家都知道在网页控制台编写的js脚本一刷新就没了下面教程教大家如何自己写一个js插件&#xff0c;此教程是小白在网上看到的的确认有效才发出来的&#xff0c;无需借助油猴。 最近工作需要小白研究了一下浏览器插件编写的过程下面分享给大家 步骤 在桌面创建一个文件夹&…

指针与数组---指针与一维数组的关系

C语言的高效得益于它指针功能的强大。然而C语言中的指针和数组的关系似乎很“纠结”&#xff0c;让人爱恨交织。指向数组的指针变量、指针数组等&#xff0c;似乎总是“你中有我&#xff0c;我中有你”。 目录 一、数组名的特殊意义及其在访问数组元素中的作用 二、指针运算…

Linux常用指令和知识(1)

目录 ls cd pwd 相对路径&绝对路径&特殊路径符 mkdir touch-cat-more cp-mv-rm which-find grep-wc 管道符 | echo 重定向符 tail &#x1f636;‍&#x1f32b;️&#x1f618;创作不易, 多多支持 前言: 我们学习的Linux命令, 其实他们的本体就是一个个…

ctf 逆向 专题题解

本文的目标是&#xff0c;记录一些不具备通用性的&#xff0c;或者比较进阶的题目。之前的另一篇文章则用于记录一些基础知识和通用性较强的基本手法。 文章目录 跨科题目buu fungame&#xff1a;reverse与pwn的结合reverseweb 反跟踪Easyhook&#xff1a;hook例题 vm类型总结一…