p19 C语言操作符详解

算术操作符 

1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。

2.对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数值型的就是浮点除法。

3.%操作符的两个操作数必须为 整数。返回的是整除之后的余数。

#include<stdio.h>
int main(){int a=5/2;//商2余1printf("a=%d\n",a);return 0;
}

    double a=5/2.0;//商2余1
    printf("a=%lf\n",a); 

 

移动操作符

<<左移操作符

>>右移操作符

右移操作符:

1.算数右移

右边丢弃,左边补原符号位

2.逻辑右移

右边丢弃,左边补0

int a=16;int b=a>>1;//右移操作符,右移是二进制位//10000//1.算数右移//2.逻辑右移printf("b=%d ",b);return 0;

int a=-1;
    //整数2进制表示有:原码、反码、补码
    //存储到内存中是补码
    //10000000000000000000000001//原码
    //11111111111111111111111110//反码
    //11111111111111111111111111//补码
    int b=a>>1;//右移操作符,右移是二进制位
    //10000
    //1.算数右移
    //2.逻辑右移
    printf("b=%d ",b);
    return 0;
}

 

int main(){int a=5;int b=a<<1;printf("%d\n",b);return 0;}

左移,左边补零,右边丢弃

位操作符

&    //按位与

|     //按位或

^     //按位异或

注:他们的操作数必须是整数。

int main(){
    //&-按2进制位与
    int a=3;
    int b=5;
    int c=a&b;
    //00000000000000000000000000000011
    //00000000000000000000000000000101
    //00000000000000000000000000000001
    printf("%d\n",c);

    return 0;
}

//按位或
int main(){int a=3;int b=5;int c=a|b;printf("%d\n",c);//00000011//00000101//00000111return 0;
}

 

//按位异或
int main(){
    int a=3;
    int b=5;
    int c=a^b;
    printf("%d\n",c);
    //00000000000000011
    //00000000000000101
    //00000000000000110

    return 0;
}

交换

int main(){
    int a=3;
    int b=5;
    int tmp=0;
    printf("before:a=%d b=%d\n",a,b);
    tmp=a;
    a=b;
    b=tmp;
    printf("after:a=%d b=%d\n",a,b);
    return 0;

}

无中间变量交换

int main(){
    int a=3;
    int b=5;
    //int tmp=0;
    printf("before:a=%d b=%d\n",a,b);
//    tmp=a;
//    a=b;
//    b=tmp;
    //加减法-可能会溢出
//    a=a+b;
//    b=a-b;
//    a=a-b;
    //异或的方法
    a=a^b;
    b=a^b;
    a=a^b;
    printf("after:a=%d b=%d\n",a,b);
    return 0;

}


011
101
110=6=a

110
101
011=3=b


110
011
101
a=5

int main(){int num=0;int count=0;scanf("%d",&num);//统计num的补码中有几个1while(num){if(num%2==1)count++;num=num/2;}printf("%d\n",count);return 0;
}

-1的话就犯错误了

改进

int i=0;int num=0;int count=0;
int main(){scanf("%d",&num);for(i=0;i<32;i++){if(1==((num>>i)&1))count++;}printf("%d\n",count);return 0;}

赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值,也就是你可以给自己重新赋值。

int main(){
    int weight=120;
    weight=89;
    double salary=10000.0;
    salary=20000.0;
    赋值操作符可以连续使用,如如:
        int a=10;
    int x=0;
    int y=20;
    a=x=y+1;//连续赋值
    这样的代码感觉怎么样?
        那同样的语义,你看看:
        x=y+1;
    a=x;
    这样的写法是不是更加清晰爽朗而且易于调试

    return 0;
}
int main(){
    int a=10;
    a=a+2;
    a+=2;
    a=a>>1;
    a>>=1;
    a=a&1;
    a&=1;
    return 0;
}

符号:

+=

-=

*=

/=

%=

>>=

<<=

&=

|=

^=

单目操作符

单目操作符有哪些?

!                逻辑反操作

-                       负值

+                        正直

&                        取地址

sizeof                操作数的类型长度(以字节为长度)

~                        对一个数的二进制按位取反

--                        前置、后置--

++                        前置、后置++

*                间接访问操作符(解引用操作符)

(类型)        强制类型转换

int main(){
    int a=10;
//    printf("%d\n",!a);
    if(a){
        printf("呵呵\n");
    }
    if(!a){
        printf("hehe\n");
    }
}


int main(){
    int a=10;
    int* p=&a;//取地址操作符
    *p=20;//解引用操作符 a的值变为20
return 0;
}

int main(){
    int a=10;
    char c='r';
    char *p=&c;
    int arr[10]={0};
    //sizeof 计算的变量所占空间大小,单位是字节
    printf("%d\n",sizeof(a));//4
    printf("%d\n",sizeof(c));//1
    printf("%d\n",sizeof(p));//4
    printf("%d\n",sizeof(arr));//40
    return 0;
}

int main(){
    int a=10;
    char c='r';
    char *p=&c;
    int arr[10]={0};
    //sizeof 计算的变量所占空间大小,单位是字节
    printf("%d\n",sizeof(a));//4
        printf("%d\n",sizeof(int));//4
    printf("%d\n",sizeof(c));//1
        printf("%d\n",sizeof(char));//4
    printf("%d\n",sizeof(p));//4
        printf("%d\n",sizeof(char));//4
    printf("%d\n",sizeof(arr));//40
        printf("%d\n",sizeof(int[10]));//4
    return 0;
}

 

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

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

相关文章

老板电器营收增速放缓毛利率下滑,AI大模型“食神”能否拯救?

《港湾商业观察》施子夫 日前&#xff0c;杭州老板电器股份有限公司&#xff08;以下简称&#xff0c;老板电器&#xff1b;002508.SZ&#xff09;发布AI烹饪大模型“食神”&#xff0c;吸引外界不少眼球。在厨电领域&#xff0c;老板电器尝试将AI带进厨房。 回顾过去&#x…

IntelliJ IDEA 使用maven构建项目时一直卡在Compiling 阶段

IntelliJ IDEA 使用maven构建项目时一直卡在Compiling 阶段 1. maven log [DEBUG] incrementalBuildHelper#beforeRebuildExecution [INFO] Compiling 56 source files to D:\code\short-url\target\classes...2. 增加日志级别 通过添加 -X 参数到 Maven 命令中&#xff08;例…

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git、gdb)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…

OpenAI训练数据从哪里来、与苹果合作进展如何?“ChatGPT之母”最新回应

7月9日&#xff0c;美国约翰霍普金斯大学公布了对“ChatGPT之母”、OpenAI首席技术官米拉穆拉蒂&#xff08;Mira Murati&#xff09;的采访视频。这场采访时间是6月10日&#xff0c;访谈中&#xff0c;穆拉蒂不仅与主持人讨论了OpenAI与Apple的合作伙伴关系&#xff0c;还深入…

postgresql删除用户

背景 **角色与用户**&#xff1a;在 PostgreSQL 中&#xff0c;用户和组的概念是通过“角色”来统一实现的。角色可以有登录权限&#xff08;在这种情况下&#xff0c;它们通常被称为“用户”&#xff09;&#xff0c;也可以没有&#xff08;在这种情况下&#xff0c;它们通常用…

系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述

系统架构设计师教程 第3章 信息系统基础知识-3.1 信息系统概述 3.1.1 信息系统的定义3.1.1.1 信息系统3.1.1.2 信息化3.1.2 信息系统的发展3.1.2.1 初始阶段3.1.2.2 传播阶段3.1.2.3 控制阶段3.1.2.4 集成阶段3.1.2.5 数据管理阶段3.1.2.6 成熟阶段3.1.3 信息系统的分类3.…

【总结】逻辑运算在Z3中运用+CTF习题

国际赛IrisCTF在前几天举办&#xff0c;遇到了一道有意思的题目&#xff0c;特来总结。 题目 附件如下&#xff1a;&#x1f4ce;babyrevjohnson.tar 解题过程 关键main函数分析如下&#xff1a; int __fastcall main(int argc, const char **argv, const char**envp){int v4…

“论企业集成平台的理解与应用”,软考高级论文,系统架构设计师论文

论文真题 企业集成平台&#xff08;Enterprise Imtcgation Plaform,EIP)是支特企业信息集成的像环境&#xff0c;其主要功能是为企业中的数据、系统和应用等多种对象的协同行提供各种公共服务及运行时的支撑环境。企业集成平台能够根据业务模型的变化快速地进行信息系统的配置…

linux环境安装mongoDB

一、安装单体mogodb 目标&#xff1a;在Linux中部署一个单机的MongoDB&#xff0c;作为生产环境下使用。 提示&#xff1a;和Windows下操作差不多。 步骤如下&#xff1a; &#xff08;1&#xff09;先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。 &#xff08;2&…

node+MySQL+Express实现账户登录,注册,重置之登录篇

nodeMySQLExpress实现账户登录 实现技术开发工具项目结构效果图app.js代码db.jsrouter下的account.jsdb下的account.jslogin.html数据库结构 实现技术 node.js,MySQL5.7(8.0以上版本会报错)&#xff0c;layui(前端框架)&#xff0c;Express notify(消息通知layui插件) 开发工…

破解反爬虫策略 /_guard/auto.js(二)实战

这次我们用上篇文章讲到的方法来真正破解一下反爬虫策略&#xff0c;这两个案例是两个不同的网站&#xff0c;一个用的是 /_guard/auto.js&#xff0c;另一个用的是/_guard/delay_jump.js。经过解析发现这两个网站用的反爬虫策略基本是一模一样&#xff0c;只不过在js混淆和生成…

高通Android 12 设置Global属性为null问题

1、最近在做app调用framework.jar需求&#xff0c;尝试在frameworks/base/packages/SettingsProvider/res/values/defaults.xml增加属性 <integer name"def_xxxxx">1</integer> 2、在frameworks\base\packages\SettingsProvider\src\com\android\provide…

2024年“数据要素×”大赛宁夏分赛正式启动

数据赋能 乘数而上 分赛聚焦“数据赋能 乘数而上”主题&#xff0c;对标国家“数据要素”大赛要求&#xff0c;结合宁夏特色优势产业、重点行业发展&#xff0c;设立工业制造、现代农业、金融服务、医疗健康、现代教育、水利应用6个行业赛道和1个通用赛道&#xff0c;围绕22个…

linux进程——概念理解与PCB

前言&#xff1a;本篇讲解Linux进程概念相关内容。 操作系统被称为计算机世界的哲学&#xff0c; 可以见得操作系统的知识并不好理解。 对于这篇进程概念的讲解&#xff0c; 博主认为&#xff0c; 如果没有一些前置知识的话&#xff0c;里面的有些概念并不好理解。 但是如果学习…

STM32测测速---编码电机读取速度的计算

1、首先先了解一下计算的公式 速度计算&#xff1a; 轮胎每转一圈的脉冲数取决于编码器的分辨率&#xff0c;可由下面公式进行计算&#xff1a; PPR是电机的线数 以GA25-370电机为例。 图片来源&#xff1a;第四节&#xff1a;STM32定时器&#xff08;4.JGA25-370霍尔编码器…

navicat15已连接忘记密码

1.导出链接 2.使用文本打开 connections.ncx UserName"root" PasswordXXXX 3.复制加密密码&#xff0c;在线解密 代码在线运行 - 在线工具 php解密代码 <?php class NavicatPassword {protected $version 0;protected $aesKey libcckeylibcckey;protected…

vue3 快速入门 (二) : 实现第一个Vue网页,并在手机上浏览

1. 最简单的一个VUE网页 首先&#xff0c;我们可以看我的这篇文章 : vue3 快速入门 (一) : 环境配置与搭建 完成环境搭建。 接着就可以来实现我们的第一个Vue网页了。 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 1.1 基础模板 vu…

leetcode热题100-技巧-只出现一次的数字

题源 136.只出现一次的数字 题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间…

未来职场:人工智能就业,人类失业

未来职场&#xff1a;人工智能就业&#xff0c;人类失业 在当今这个快速发展的时代&#xff0c;人工智能和自动化技术的迅猛进步不仅改变了我们的生活方式&#xff0c;也对各行各业产生了深远的影响。从无人驾驶汽车到自动化建筑技术&#xff0c;从机器翻译到智能法律咨询&…

[日进斗金系列]用码上飞解决企微开发维修管理系统的需求

前言&#xff1a; 今天跟大家唠唠如何用小money生 大money的方法&#xff0c;首先我们需要准备一个工具。 这个工具叫码上飞CodeFlying&#xff0c;它是目前国内首发的L4级自动化智能软件开发平台。 它可以在短时间内&#xff0c;与AI进行几轮对话就能开发出一个可以解决实际…