C语言之运算符

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;
}

十一、成员运算符

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

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

运算符的优先级和结合性

在这里插入图片描述

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux---详细讲解linux计算机体系结构

前言 Linux是一种开源的操作系统&#xff0c;它的核心思想是基于冯诺依曼体系结构。在本文中&#xff0c;我们将深入探讨Linux的基本原理和操作系统的概念。 Linux是一款基于Unix操作系统的开源软件&#xff0c;它的核心是由Linus Torvalds在1991年开发的。Linux的出现&#x…

CSS | CSS中height:100vh和height:100%的区别

目录 1、对于设置height:100%;有下面几种情况 2、对于设置height:100vh时有如下的情况 首先&#xff0c;我们得知道1vh它表示的是当前屏幕可见高度的1/100&#xff0c;而1%它表示的是父元素长或者宽的1% 1、对于设置height:100%;有下面几种情况 &#xff08;1&#xff09;当…

Win10 hyper-v与vmware不兼容解决方案

Win10 hyper-v与vmware不兼容怎么办 一、异常1.1 异常描述 - V M w a r e W o r k s t a t i o n 与 H y p e r − V 不兼容 \color{red}{VMware Workstation 与 Hyper-V 不兼容} VMwareWorkstation与Hyper−V不兼容1.2 异常原因 二、解决办法2.1 关闭Hyper-V启动2.2 关闭内核…

OpenGL 光照贴图

1.简介 现实世界中的物体通常并不只包含有一种材质&#xff0c;而是由多种材质所组成。想想一辆汽车&#xff1a;它的外壳非常有光泽&#xff0c;车窗会部分反射周围的环境&#xff0c;轮胎不会那么有光泽&#xff0c;所以它没有镜面高光&#xff0c;轮毂非常闪亮。 2.漫反射…

pyspark安装教程

pyspark安装教程 一、Windows下配置pyspark环境1.1 JDK下载安装1.2 Scala下载安装1.3 spark下载安装1.4 Hadoop下载安装1.5 pyspark下载安装 二、pyspark原理简介 一、Windows下配置pyspark环境 在python中使用pyspark并不是单纯的导入pyspark包就可以实现的&#xff0c;而是需…

【SpringCloud入门】-- Nacos快速入门之搭建服务与注册中心

目录 前言&#xff1a; 1.Nacos的下载与安装 2. 去MySQL建立一个名为nacos的数据库 3.介绍配置文件&#xff0c;conf目录下的 application.properties 4.nacos启动 5. nacos作为注册中心的作用 6.建立一个项目&#xff0c;实现向命名空间注册 前言&#xff1a; 上文我们已…

基于人工智能的AI理发师能帮托尼老师做什么?

BarberGPT是一个人工智能理发师&#xff0c;它可以让您在照片上尝试不同的发型。您只需要上传您的照片&#xff0c;标记您的头发&#xff0c;然后就可以看到惊人的变化。BarberGPT使用了先进的深度学习技术&#xff0c;可以根据您的脸型、肤色和发质生成适合您的发型。BarberGP…

MySql常见问题(长期更新)

基于mysql 8.0.3版本 一、忘记root密码1.1 、linux 系统下忘记密码1.2、Windows 系统下忘记密码1.3 Unix 和类 Unix 系统 二、账号问题2.1 远程访问账号设置 一、忘记root密码 1.1 、linux 系统下忘记密码 啥&#xff1f;你问我为什么会忘记密码&#xff1f;别问&#xff0c;…

Spring Boot高阶篇笔记

一、Spring Boot整合Redis缓存 JSR-107、Spring缓存抽象、整合Redis 1、JSR107 Java Caching定义了5个核心接口&#xff0c;分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。 • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应…

Oracle 查询优化改写(第一章)

第一章 单表查询 1.查询空值 2.将空值转换为实际值 不采用nvl&#xff08;&#xff09;函数&#xff0c;而使用COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n)&#xff0c;n>2,此表达式的功能为返回第一个不为空的表达式&#xff0c;如果都为空则返回空值。 注…

tp6安装并使用rabbitMQ

最近因为业务需要,要用到MQ就去研究了一下,说实话,安装环境给我搞自闭了,大概是我太菜 刚开始使用yum换源,各种安装卸载始终找不到自己要用的版本,后来全部卸载,下载安装包 编译安装解百忧 我用的是erlang 25.3 的版本,MQ使用的是3.11.3的版本,符合官方要求,这里的版本是有强…

TCP为什么要三次握手与四次分手?

概要 TCP协议是五层协议中运输层的协议&#xff0c;下面依赖网络层、链路层、物理层&#xff0c;对于一个报文想发到另一台机器(假设是服务器)上对等层&#xff0c;每一个所依赖的层都会对报文进行包装&#xff0c;例如TCP协议就依赖网络层的IP协议&#xff0c;所以发送的报文会…

实习记录(二)Java常用工具库

一.Lombok 1.背景概述 Lombok是一个非常高效的专用于Java的自动构建插件库&#xff0c;其简化了 JavaBean 的编写&#xff0c;避免了冗余和样板式代码的出现&#xff0c;让编写的类更加简洁明了&#xff0c;可以帮助大家节省很多重复低效的代码编写。比如重复性的Setter、Gett…

日志是什么?耗时2个月搞懂Linux日志

这里写目录标题 日志基本介绍日志管理服务日志轮替 日志基本介绍 日志是用来记录重大事件的工具。 日志文件是重要的系统信息文件&#xff0c;其中记录了很多重要的系统事件。包括用户的登录信息&#xff0c;系统的启动信息&#xff0c;系统的安全信息&#xff0c;邮件相关信息…

ChatGPT:数字时代革新与展望

ChatGPT&#xff1a;数字时代革新与展望 AGI 未来的愿景&#xff1a;建安全有益的 AGI OpenAI团队对AGI的展望&#xff1a; 我们希望 AGI 能够赋予人类在宇宙中最大程度地繁荣发展的能力。我们不期望未来是一个不合格的乌托邦&#xff0c;但我们希望将好的最大化&#xff0c;将…

【云计算 | Azure】微软 Azure 基础解析(九)Azure 标识、身份管理、Azure AD 的功能与用途

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx 【A…

国产MCU-CW32F030开发学习--按键检测

国产MCU-CW32F030开发学习–按键检测 bsp_key 按键驱动程序用于扫描独立按键&#xff0c;具有软件滤波机制&#xff0c;采用 FIFO 机制保存键值。可以检测 如下事件&#xff1a; 按键按下。 按键弹起。 长按键。 长按时自动连发。 我们将按键驱动分为两个部分来介绍&#xff…

Spark大数据处理学习笔记1.5 掌握Scala内建控制结构

文章目录 一、学习目标二、条件表达式&#xff08;一&#xff09;语法格式&#xff08;二&#xff09;执行情况&#xff08;三&#xff09;案例演示任务1、根据输入值的不同进行判断任务2、编写Scala程序&#xff0c;判断奇偶性 三、块表达式&#xff08;一&#xff09;语法格式…

电弧打火机方案,点烟器单片机开发方案

市面上的打火机除了明火之外&#xff0c;还有电热丝、电弧两种类型的点烟器。电热丝在使用过程中会变细并且烧断。宇凡微推出的电弧打火机方案&#xff0c;该点烟器芯片为宇凡微单片机YF系列&#xff0c;电弧点烟器IC性价比高。 一、电弧打火机方案的原理 电弧打火机使用的是电…

【git切换分支/tag】git stash保存暂不提交的更改

目录 问题git stash使用方法git stash pop 还原修改 git stash使用、修改指定tag的代码 其他git指令 问题 情景&#xff1a;分支1上开发新功能&#xff0c;临时切换到其他分支或tag上修改bug。 1、直接切换&#xff1a;如果没有冲突&#xff0c;分支1的修改会带到要切换的分支…