当前位置: 首页 > news >正文

8-运算符

一.算数运算符

    

int a = 3,b = 2;
int c = a + b;

注意:

/ 若是两边的数据都是整数的话,默认为整除。⼩数舍掉.

% 要求两边的运算符号⼀定要全部都是整数。否则,系统提示错误

示例代码:

 int a = 0,b = 0;
        int sum = 0;
        printf("please input two data : ");
        scanf("%d%d",&a,&b);
        sum = a + b;
        printf("a + b = %d\n",sum);
        sum = a - b;
        printf("a - b = %d\n",sum);
        sum = a * b;
        printf("a * b = %d\n",sum);
        sum = a / b;
        printf("a / b = %d\n",sum);
        sum = a % b;
        printf("a %% b = %d\n",sum); 

 二.⾃增和⾃减运算符

int a = 100; 
int b = 0; 
b = ++a; 
b = --a; 
规则: 前置++,先做加法运算,在赋值

b = a++; 
b = a--; 
规则: 后置++ 先进⾏赋值操作,在++

三.关系运算符

(1)C语⾔中规定,关系表达式值只有两个 0 (假)和 1 (真)。
 
(2)=和==不同,=表示赋值操作,==表示逻辑判断是否相等。

(3)⼀般C语⾔中定义,0为假,⾮0为真。
#include <stdio.h>
 int main()
 {
        int data = 0;
        printf("please input a data : ");
        scanf("%d",&data);
        printf("data > 30 = %d\n",data > 30); 
        printf("data == 30 = %d\n",data == 30); 
        printf("============================\n");
        printf("data = 800 : %d\n",data = 800); 
        printf("data != 800 : %d\n",data != 800);
        printf("============================\n");
        printf("10 < data < 20 : %d\n",10 < data < 20);
        return 0;
 }

运行结果:

 please input a data : 20 10
 data > 30 = 0
 data == 30 = 0
 ============================
 data = 800 : 800
 data != 800 : 0
 ============================
 10 < data < 20 : 1

四.逻辑语运算符:

1.逻辑与&&

      规则:都真则真,⼀假则假

      短路特性:表达式 1 为假,则不会执⾏表达式 2

示例:

 int a = 10,b = 20;
 int ret = a > b && a;

2.逻辑或||

     规则:都假则假,⼀真则真

     短路特性:表达式 1 为真,则不会执⾏表达式 2

示例:

 int a = 10,b = 20;
 int ret = a > b || a;   
#include <stdio.h>
 int main()
 {
        int a = 0,b = 0;
        int ret = 0;
        printf("please input two data : ");
        scanf("%d%d",&a,&b);
        ret = a > b || a != 30;
        printf("ret = %d\n",ret);
        return 0;
 }

运行结果:

please input two data : 20 10
ret = 1

示例代码2:

 #include <stdio.h>
 int main()
 {
        int a = 7,b = 9,c = 1;
        int ret = 0;
        ret = a > b && c ++;
        printf("ret = %d c = %d\n\n",ret,c); 
        printf("+++++++++++++++++++++++++\n");
        ret = a < b && c ++;
        printf("ret = %d c = %d\n\n",ret,c); 
        printf("========================================\n");
        c = 1;
        ret = a > b || c ++;
        printf("ret = %d c = %d\n\n",ret,c); 
        printf("+++++++++++++++++++++++++\n");
        ret = a < b || c ++;
        printf("ret = %d c = %d\n\n",ret,c); 
        return 0;
 }

运行结果:

 ret = 0 c = 1
 +++++++++++++++++++++++++
 ret = 1 c = 2
 ========================================
 ret = 1 c = 2
 +++++++++++++++++++++++++
 ret = 1 c = 2

要求⼤家⽤笔算出下列 printf 输出的结果

int value = 0;
 int a = 0;
 int b = 1;
 value = a && b;
 printf("%d\n",value); 
value = a || b;
 printf("%d\n",value); 
value = a++ && b ++; 
printf("%d\n",value);
 value = --a || b--; 
printf("%d\n",value); 
value = (a + b) || (a - b); 
printf("%d\n",value); 
value = (a * b) && (a + b); 
printf("%d\n",value); 
value = !a;
 printf("%d\n",value); 
printf("%d,%d,%d\n",a,b,value);

五.位运算符:

实例:

示例2:

 #include <stdio.h>
 int main()
 {
        unsigned char  a = 10,b = 15;
        unsigned char  t = 0;
 
        printf("a = %d b = %d\n",a,b);
        
        a = a ^ b;
        b = a ^ b;  
        a = a ^ b;  
        
        printf("a = %d b = %d\n",a,b);
        return 0;
 }

示例3:

 #include <stdio.h>
 int main()
 {
        unsigned char reg = 3; 
        char a = -3; 
                     
                                        
        reg = reg << 3;
        printf("reg = %d\n",reg); 
        
             
        
        a = a << 3;
        printf("a = %d\n",a); 
                    
        
        a = a >> 6;
        printf("a = %d\n",a); 
        return 0;
 }

六.赋值复合运算符

#include <stdio.h>
 int main()
 {
    int a = 20,b = 10;
    a += b; 
    printf("a = %d\n",a); 
    a *= b; 
    printf("a = %d\n",a); 
    return 0;
 }

七. 逗号运算符和三⽬运算符

   1.逗号运算符格式:

ret = 表达式1,表达式2,表达式3,....,表达式n


功能:按顺序执⾏表达式,并将表达式n的结果,作为整个表达式的值赋值给ret。在所有的运算符中,逗号表达式的优先级最低
float  x=10.5,  y=1.8,  z=0;
z = (x+=5, y = x+0.2) ;      
z 赋值为15.7, x赋值为15.5, y赋值为15.7

z = (x=y=5, x +=1) ;      
z 赋值为6, x赋值为6,  y赋值为5

z = (x=5, y = 6, x+y ) ;      
z赋值为11, x赋值为5,  y赋值为6

z = (z=8, x=5, y = 3) ;      
z 赋值为3, x赋值为5, y赋值为3

2.三目运算符格式:

 ret = 表达式1 ?  表达式2:  表达式3 ;

功能:判断表达式1是否为真,若是为真则执⾏表达式2.并把表达式2最终的结果复制给ret,否则,就执⾏表达式3,并把表达式3最终的结果复制给ret,

示例:

 int  a = 8,b = 2 
ret = a > b ? a + b : a - b;
 pritnf("ret = %d\n",ret);
 #include <stdio.h>
 int main()
 {
        int a = 10,b = 20;
        int c = 0;
        int ret = 0;
        ret = a < b ? (c = a,a = b,b = c) : a * b;
        printf("result = %d\n",ret); 
        return 0;
 }

练习:

   定义三个整数a,b,c,⽤户从键盘输⼊赋值,从⼩到⼤,排列,然后输出 [不允许使⽤if语句]最终输出,a保存最值保存其次,c保存最⼤值

例如 :

⽤户输⼊ a = 30,b = 20,c = 10. 要求最终保存的结果为 a = 10,b = 20,c = 30.

八.运算符优先级

1.运算符优先级规律:

初等单⽬⼀⼆级 // 初等运算符和单⽬运算符分别是第 1、2 优先级

乘除求余加减移 // 这句⾥⾯的运算符全归为算术运算符,移表示移位

关系等于不等于 // 关系运算符 ( >=)

按位与来异或或 // 位运算符优先级顺序:& -> ^->l 从左向右 从右向左 从左向右

逻辑与或条件弱 // 逻辑运算符优先级顺序:&&->||,后⾯跟着优先级⽐较低 (弱) 的条件运算符

赋值逗号⼀点破 // 赋值,逗号最低

相关文章:

  • Ubuntu16.04配置远程连接
  • java基础 数组Array的介绍
  • 版本控制工具——Git
  • 买不起了,iPhone 或涨价 40% ?
  • C++ 模板的应用——智能指针、STL库
  • MySQL学习笔记五
  • 电脑DNS出错无法打开网页
  • 笔记 2025/4/7
  • 构建一个最简单的UDP服务器和客户端并逐行解析
  • “暂不能解析域名”的错误的常见原因及解决方法
  • Spring Boot 项目日志系统全攻略:Logback、Log4j2、Log4j与SLF4J整合指南
  • Java中使用Function Call实现AI大模型与业务系统的集成​
  • SQL:数据类型(Data Types)
  • 懂x帝二手车数据爬虫-涉及简单的字体加密,爬虫中遇到“口”问题的解决
  • 可发1区的超级创新思路(python 实现):基于时空解耦和对比学习的可解释性模型
  • AI大模型底层技术——结合 Prompt Engineering 的 LoRA
  • 《C++速通秘籍》
  • GD32F407开发环境搭建
  • 基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++ 环境设置
  • 中小公司做网站/巨量引擎广告投放平台官网
  • 温州瑞安网站建设平台/网站推广的方法有哪些?
  • 如何做自己的论坛网站/河南seo关键词排名优化
  • 什么是优化型网站/市场营销是做什么的
  • 宿迁网站建设/索引擎优化 seo
  • 营销型网站制作平台/重庆seo全面优化