14.【C语言】初识操作符 上

目录

分类

1.算术操作符

注意

除法操作符/(正斜杠)介绍

总结

取模操作符%介绍

注意

2.移位操作符

代码示例

重要总结

3.位操作符(& ^ | ~是补码运算,且必须操作的是整数)

4.赋值操作符

5.单目操作符

!逻辑取反


分类

1.算术操作符

+ - * / %

操作数1+操作数2   操作数1-操作数2   操作数1*操作数2   操作数1/操作数2   操作数1%操作数2

即四则运算和%

注意

除法操作符/(斜杠)介绍

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
	float a = 9 / 2;
	printf("%f\n", a);
    printf("%f\n", 9 / 2.0);
}

结果不同

9/2=4……1(相当于直接去除小数部分打印整数部分)

9/2.0=4.5(2.0告诉计算机保留小数)

%f和%lf默认情况下打印小数点后六位

总结

除号的两端如果是整数,执行的是整数除法,得到的结果也是整数

如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法

取模操作符%介绍

%取模=取余数   9%2=1 

注意

%只能用于整数,负数求模的结果的正负号由第一个运算数的正负号决定

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	printf("%d\n", -5 % 4);
	printf("%d", 5 % -4);
	return 0;
}

结果:

2.移位操作符

>> <<

<<是移二进制位(箭头指向左侧)

>>是移二进制位(箭头指向右侧)

代码示例

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
    int a =10;
    int b = 0;
        b = a << 1;
    printf("%d\n", b);
}

注意:a<<1,a左移1位,但a的值没有变;a<<=1,a左移1位,a的值变了

原因:

1010-->10100(默认补0)

注意:C语言的移位是逻辑移位还是算术移位取决于编译器,但大部分编译器(如VS 2022 )选择算术移位

有关移位的分类讲解见《计算机科学导论 第三版》第53~54页

警告:1.禁止移动负数位(例如<< -1是错误的) 2.禁止移动的位数超过最大位数

a>>-3(错误);a<<100(若最大位数是32位,100>32,错误)

有关sizeof函数的介绍在3.【C语言】内置数据类型

同理>>反过来

重要总结

1.<<:无论算术左移还是逻辑左移都是左边抛弃,右边补0

2.>>:算术右移左边用0填充右边丢弃;逻辑右移:左边用原该值的符号位填充右边丢弃

3.移位是对补码操作

3.位操作符(& ^ | ~是补码运算,且必须操作的是整数)

位:二进制位

复习:《计算机科学导论 第三版 》第49~53页

是位对之间的运算

&按位与(AND运算)

x==0或1,x AND 0-->0 和 0 AND x-->0

^按位异或(XOR运算即半加运算)

x==0或1 x XOR 1-->NOT x 和 1 XOR x-->NOT x

|按位或(OR运算)

x==0或1 x OR 1-->1 和 1 OR x-->1

~按位取反(NOT运算)

x==0, NOT x-->1

x==1, NOT x-->0

4.赋值操作符

  连续赋值(从右向左依次赋值):a=b=c+1

  复合赋值:a+=3;(自增)b-=5;(自减)

                 a=a+b简写为a+=b

                 a=a-b简写为a-=b

                 a=a%b简写为a%=b

                 a=a*b简写为a*=b

                ……以此类推

5.单目操作符

有单就有双

a+b; //+有两个操作数,+是双目操作符

所以单目操作符只有一个操作数

介绍:

!逻辑取反

0表示假,非0表示真

!a  如果a是假,!a为真;如果a为真,!a为假

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
    int a =0;
    printf("%d\n", !a);
}

结果默认输出1

!a常用于if语句的使用

#define  _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main()
{
    int a=0; 
    scanf("%d", &a);
    if (!a)
        printf("A");
    else
        printf("B");
    return 0;
}

-负值

-2

+正值

+3 

sizeof 计算数量类型或变量的大小

内容概要:本文围绕“考虑储能和可再生能源误差的售电公司购售电策略”展开,基于Python代码实现,构建了日前调度和日内调度两个时间尺度下的优化模型,旨在帮助售电公司在存在可再生能源出力不确定性及储能系考虑储能和可再生能源误差的售电公司购售电策略(Python代码实现)统参与的情况下,制定最优购售电决策。研究综合考虑了电价波动、负荷需求、储能充放电特性以及风光发电预测误差等因素,通过数学建模与优化算法求解,降低运营风险并提升经济效益。文中强调该策略为顶级SCI复现工作,具有较强的学术参考价值和技术实用性,并配套提供完整的代码资源供学习与验证。; 适合人群:具备一定电力系统基础知识和Python编程能力的研究生、科研人员及从事能源交易、智能电网优化等相关领域的工程技术人员。; 使用场景及目标:① 掌握含不确定性因素的电力市场购售电优化建模方法;② 学习多时间尺度调度框架的设计与实现;③ 复现高水平SCI论文中的优化策略,提升科研能力与项目实践水平。; 阅读建议:建议读者结合提供的Python代码逐模块分析,重点关注目标函数构建、约束条件设置及求解器调用过程,同时可借助文中提及的YALMIP等工具包深入理解优化模型的实现细节,推荐在实际数据基础上进行调试与扩展实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangcoder

赠人玫瑰手有余香,感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值