初识C语言--第二天(基础运算符)

     ---取地址符:&

            &  叫做取地址符&+变量名:可以获取变量在内存中的地址(通过%p可以打印在内存中的地址)

示例:

输出结果:

(注:Linux 64位操作系统环境下,打印出来的地址会很大,因为在64位操作系统中,地址变量在内存中占有8个字节)

---C语言的输入函数scanf

        格式:scanf(“格式控制串”,变量1的地址,变量2的地址,...)

        功能:从键盘上输入数据存放到变量1,变量2.....,变量n所表示的内存单元;

示例代码:

运行结果:

---有符号和无符号数

        在C语言中,基本数据类型都可以分为有符号(signed)无符号数(unsigned)

                

                                signed                                        unsigned
      含义        有符号数【正数、0、负数】                     无符号数【正数,0】
      写法    (signed)int、(signed)char,其中signed可省略不写                    unsigned int,unsigned char

---8bit数据的存储

        char,有符号类型,在内存中占1个字节,可以表示负数,0,正数;表示的数据范围【-128~127】

        unsigned  char,无符号类型,在内存中占1个字节,可以表示0,正数;表示的范围【0~255】

--原码、反码、补码

        无符号类型的数:原码,反码,补码都相同

例:

        10:原码:00000000 00000000 00000000 00001010

                反码:00000000 00000000 00000000 00001010

                补码:00000000 00000000 00000000 00001010

        有符号类型的负数的原码、反码和补码如下:

例:

        -10:原码:10000000 00000000 00000000 00001010        (其中第一位表示符号,1表示负数;0表示负数

                反码:11111111 11111111 11111111 11110101        (符号位不变,其他位取反

                补码:11111111 11111111 11111111 11110110        在反码的基础上+1

        --超出范围数据的计算方法

        1. 先计算整数的补码(=右边的数)
        2. 把补码赋值给变量,然后观察变量的数据类型,
         3.若是为unsinged char类型,一定为正数或0,原,反,补一样.%d输出的原码就是补码,直接转换为元素输出即可。
         4.若是为char类型,观察变量内存存储数据的最高位,1表示为负数,%d输出需要转换为原码输出.

示例代码:

输出结果:

---强制类型转换

        含义:采取某种方式将某种数据类型强制转换为我们需要的数据类型(注:强制转换知识临时强转,本身数据类型没有改变

       --显式转换

        格式:(数据类型)变量名(如 :int num = (int)pi;

        --隐式转换

        若运算符俩边的类型不匹配,并且没有进行显示指定类型;系统会默认触发隐式的强转,强转规则如下:

---算数运算符

        

                      运算符                           含义
                        +俩数相加
                        -俩数相减
                        *俩数相乘
                        /俩数相除(注:除数不能为零
                        %取模运算符(求余)要求俩边运算符必须为整数

tips:

         若俩边的操作数都为整数,默认为整除,小数舍去;

        %  要求俩边的运算数必须为整数,否则,系统提示错误;

示例代码:

输出结果:

---自增(++),自减(--)运算符

        规则:

        前置++(--),先做加(减)法运算,再赋值

        后置++(--),先进行赋值操作,再++(--)

        (注:++,--运算符是单目运算符

示例代码:

输出结果:

---关系运算符

        --常见的关系运算符

                     运算符                        含义
                        >大于
                        >=大于等于
                        <小于
                        <=小于等于
                        ==等于
                        !=不等于

说明:

<1>条件成立的时候,运算结果为真(1),不成立时,运算结果为假(0);

<2>C语言规定,关系表达式的值只有两个 0 (假)1 (真)

 <3>=和== 不同, =表示赋值操作,==表示判断是否相等;

示例代码:

输出结果:

---逻辑运算符

        --逻辑与  &&

        格式:表达式1 &&  表达式2

        规则:全真则真,有假则假

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

        --逻辑或  ||

        格式:表达式1 ||  表达式2

        规则:全假则假,有真则真

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

        --逻辑非  !

        规则:将假变成真,将真变成假

示例代码:

输出结果:

---位运算符

        --按位与运算符  &

        格式:表达式1  &  表达式2

        结果:1按位与1的结果为1,1按位与0的结果为0,0按位与0的结果为0(速记:全1则1,有0则0

        --按位或运算符  |

        格式:表达式1  |  表达式2

        结果:1按位或0结果为1,1按位或1的结果为1,0按位或0的结果为0(速记:有1则1,全0则0

        --按位异或运算符  ^

        格式:表达式1  ^  表达式2

        结果:相同为0,不同为1

        --按位取反运算符  ~

        格式:~表达式

        结果:1变成0,0变成1

        --左移运算符

        格式:表达式 << 位数

        结果:无论是正数还是负数,左移都是对应的二进制位向左移动高位丢弃,低位补0 左移的时候,等价于将这个数据乘以2的n(移动的位)次方

        --右移运算符

        格式:表达式  >>  位数

        结果:逻辑右移(针对无符号数据) 对应的是正数和0,逻辑右移是对应的二进制位向右移动,低位丢弃,高位补0。算术右移(针对有符号数据):若是数据为正数,算术右移是对应的二进制位向右移动,低位丢弃,高位补0。若是数据为负数,算术右移是对应的二进制位向右移动,低位丢弃,高位补1。速记:向右移动,低位丢弃,高位正数补0,负数补1

示范代码:

输出结果:

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值