C#变量、常量与运算符

news2024/9/21 22:42:11

文章目录

      • 变量
        • 变量定义
        • 命名规则
        • 作用域和生命周期
      • 常量
        • 特殊字符常量
      • 运算符
        • 算术运算符
        • 关系运算符
        • 逻辑运算符
        • 位运算符
        • 赋值运算符
        • 其他运算符

变量

  变量就是一个存储空间的名字,变量是什么类型,这个空间里面存储的就是什么类型的数据。

变量定义

<data_type> <variable_list>

  data_type代表C#中的一个数据类型,variable_list是一个或多个变量,多个变量之间要用逗号分开。

命名规则

  变量名可以包含字母、数字和下划线;

  变量名必须以字母或者下划线开头,不能用数字作为开头;

  变量名区分大小写;

  不能使用C#中的关键字作为变量名。

作用域和生命周期

  局部变量的的作用域和生命周期在其所处的代码块内,出了代码块作用域和生周期结束;

  全局变量的生命周期随着整个程序的结束而结束

  局部变量和全局变量冲突时,局部优先。

常量

  常量是不可被修改的数据,它可以是任何一种基本的数据类型。

特殊字符常量
转义序列含义
\\\字符
\''字符
\""字符
\??字符
\aAlert或者bell
\b退格键
\f换页字符
\n换行字符
\r回车
\t水平制表符
\v垂直制表符
\ooo一到三位的八进制数
\xhhh...一个或多个十六进制数

运算符

算术运算符
运算符描述
+把两操作数相加
-把两操作数相见
*把两操作数相乘
/把两操作数相除
%取模运算符,两数进行整除,取整除之后的余数
++自增运算符,操作数自加1。前置++先++在使用,后置++先使用在++
--自减运算符,操作数自减1,前置--先--在使用,后置--先使用在--
namespace Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 13;
            int y = 3;

            Console.WriteLine("x + y: {0}", x + y);
            Console.WriteLine("x - y: {0}", x - y);
            Console.WriteLine("x * y: {0}", x * y);
            Console.WriteLine("x / y: {0}", x / y);
            Console.WriteLine("x % y: {0}", x % y);
            Console.WriteLine("x++: {0}", x++);
            Console.WriteLine("++x: {0}", ++x);
            Console.WriteLine("y++: {0}", y++);
            Console.WriteLine("++y: {0}", ++y);
        }
    }
}

在这里插入图片描述

关系运算符
运算符描述
==判断左右两操作数是否相等,并返回结果。这里容易写成赋值运算符=,所以可以将常量写在左侧,因为常量不能做左值,这样编译器会提示报错
!=判断左右两操作数是否不等,并返回结果。
>判断左操作数是否大于右操作数,并返回结果
< 判断左操作数是否小于右操作数,并返回结果
>=判断做操作数是否大于等于右操作数,并返回结果
<= 判断做操作数是否小于等于右操作数,并返回结果
namespace Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 13;
            int y = 3;

            Console.WriteLine("x == y is {0}", x == y);
            Console.WriteLine("x != y is {0}", x != y);
            Console.WriteLine("x > y is {0}", x > y);
            Console.WriteLine("x < y is {0}", x < y);
            Console.WriteLine("x >= y is {0}", x >= y);
            Console.WriteLine("x <= y is {0}", x <= y);
        }
    }
}

在这里插入图片描述

逻辑运算符
运算符描述
&& 逻辑与,全真为真
||逻辑或,有真为真
逻辑非,非真为真
namespace Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            bool T = true;
            bool F = false;

            Console.WriteLine("T && F is {0}", T && F);
            Console.WriteLine("T || F is {0}", T || F);
            Console.WriteLine("!T is {0}", !T);
            Console.WriteLine("!F is {0}", !F);
        }
    }
}

在这里插入图片描述

位运算符
运算符描述
& 按位与运算符,全1为1,有0为0
|按位或运算符,有1为1,全0为0
^按位异或运算符,相同为0,不同为1
~按位取反运算符,变0为1,变1为0
<< 左移运算符,向左移动操作数的指定位数,在末尾添0
>> 右移运算符,向右移动操作数的指定位数,有符号数在首位添符号位,无符号数添0
namespace Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 61; //0000 0000 0011 1101
            int b = 50; //0000 0000 0011 0010

            Console.WriteLine("a & b = {0}", a & b); // 0011 0000
            Console.WriteLine("a | b = {0}", a | b); // 0011 1111
            Console.WriteLine("a ^ b = {0}", a ^ b); // 0000 1111
            Console.WriteLine("~a = {0}", ~a); //1111 1111 1100 0010 ->1111 1111 1100 0001 ->1000 0000 0011 1110
            Console.WriteLine("b << 2 = {0}", b << 2); // 0000 0000 1100 0100
            Console.WriteLine("b >> 2 = {0}", b >> 2); // 0000 1100
        }
    }
}

在这里插入图片描述

  这里涉及到一个原反补的概念。

赋值运算符
运算符描述
= 赋值运算符,右边的值赋给左边
+= 左右操作数相加之后的值付给左操作数
-=左操作数减去右操作数,并将值赋给左操作数
*=左操作数乘上右操作数,并将值赋给左操作数
/= 左操作数除去右操作数,并将值赋给左操作数
%= 左操作数模右操作数,并将值赋给左操作数
<<= 左操作数左移右操作数位,并将结果赋值给左操作数
>>=左操作数右移左操作数位,并将结果赋值给左操作数
&=按位与并赋值
|= 按位或并赋值
^= 按位异或并赋值
namespace Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 61;
            int b = 50;
            int c = 0;

            c = b;
            Console.WriteLine("c = {0}", c);
            c += b;
            Console.WriteLine("c = {0}", c);
            c -= b;
            Console.WriteLine("c = {0}", c);
            c *= a;
            Console.WriteLine("c = {0}", c);
            c /= a;
            Console.WriteLine("c = {0}", c);
            c %= a;
            Console.WriteLine("c = {0}", c);
            c <<= 2;
            Console.WriteLine("c = {0}", c);
            c >>= 2;
            Console.WriteLine("c = {0}", c);
            c &= a;
            Console.WriteLine("c = {0}", c);
            c |= b;
            Console.WriteLine("c = {0}", c);
            c ^= a;
            Console.WriteLine("c = {0}", c);
        }
    }
}

在这里插入图片描述

其他运算符
运算符描述
sizeof()返回数据类型大小
typeof()返回class的类型
&取地址,返回变量地址
*解引用,*指针返回指针指向变量的值
? : 条件表达式,条件语句?条件语句为真执行这条语句:条件语句为假执行这条语句
is判断对象是否是某一类型
as强制转换,即使转换失败也不会抛出异常
typeof()返回class的类型
&取地址,返回变量地址
*解引用,*指针返回指针指向变量的值
? : 条件表达式,条件语句?条件语句为真执行这条语句:条件语句为假执行这条语句
is判断对象是否是某一类型
as强制转换,即使转换失败也不会抛出异常

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

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

相关文章

C语言学习记录day3

第三天主要是练习代码编写 一、有序数组元素的查找 顺序法时间复杂度O(n) 二分法时间复杂度O&#xff08;log2n&#xff09; 二、演示多个字符从两端向中间移动汇聚 三、模拟登录密码场景 四、求最大公因数 五、... 剩余更多代码练习已上传至个人github&#xff08;日期1…

SSM学习6:Spring事务

简介 事务作用&#xff1a;在数据层保障一系列的数据库操作同成功同失败Spring事务作用&#xff1a;在数据层或业务层保障一系列的数据库操作同成功同失败 public interface PlatformTransactionManager{void commit(TransactionStatus status) throws TransactionStatus ;vo…

C++第五弹 -- 类与对象(中下) (赋值运算符重载函数 const成员函数 取地址操作符重载函数)

目录 前言一. 赋值运算符重载1. 运算符重载2. 赋值运算符的重载3. 前置 和 后置 重载 二. 日期类的实现三. const成员函数四. 取地址及const取地址操作符重载总结 前言 本文将深入探讨C中的运算符重载&#xff0c;重点讲解赋值运算符、前置/后置运算符、取地址运算符的重载方法…

2024 ACT汽车软件与安全技术周 | 龙智携全方位汽车软件开发解决方案亮相,助力应对汽车软件开发功能安全、合规等挑战

2024年7月18-19日&#xff08;周四-周五&#xff09;&#xff0c;2024第三届ACT汽车软件与安全技术周将在上海佘山翰悦阁酒店举办。 龙智即将携汽车开发及管理解决方案创新亮相&#xff0c;并在汽车信息安全技术峰会主会场上发表主题演讲&#xff0c;分享推动汽车软件开发与功…

RAG实践:ES混合搜索BM25+kNN(cosine)

1 缘起 最近在研究与应用混合搜索&#xff0c; 存储介质为ES&#xff0c;ES作为大佬牌数据库&#xff0c; 非常友好地支持关键词检索和向量检索&#xff0c; 当然&#xff0c;支持混合检索&#xff08;关键词检索向量检索&#xff09;&#xff0c; 是提升LLM响应质量RAG(Retri…

【JS|第21期】JavaScript模块化:深入解析三种文件暴露方式

日期:2024年7月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

Portainer工具

Portainer是一款免费、开源的Docker的图形化管理工具&#xff0c;其能够提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和…

ST Smart Things Sentinel:一款针对复杂IoT协议的威胁检测工具

关于ST Smart Things Sentinel ST Smart Things Sentinel&#xff0c;简称ST&#xff0c;是一款功能强大的安全工具&#xff0c;广大研究人员可以使用该工具检测物联网 (IoT) 设备使用的复杂协议中的安全威胁。 在不断发展的联网设备领域&#xff0c;ST Smart Things Sentinel…

揭秘反向沙箱:企业网络安全的终极防线

通常&#xff0c;我们讨论的沙箱环境分为正向沙箱和反向沙箱。那么什么正向沙盒反向沙盒到底是什么呢&#xff1f; 正向沙箱通常用于分析来自外部的未知文件、电子邮件附件、网页内容等&#xff0c;以检测其中是否包含恶意软件或有害代码。这种沙箱通常位于企业的防火墙之外&am…

鸿蒙next 下拉刷新上来加载 来了 我不允许你不会

前言 各位同学大家好, 有段时间没有给大家更新文章了 ,最近在开发 鸿蒙next中 有用到这个下拉刷新和上来加载的功能就准备写个文章分享一下 那么废话不多说 我们正式开始: 效果图 准备工作: 找到我们DevEco studio 的安装位置 找到我们ohpm 的bin目录 配置在环境变了中 …

Plotly.js带颜色比例的轮廓图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Plotly.js Contour Plot with Color Scale 应用场景 Contour plot 是一种可视化数据分布的图表&#xff0c;常用于气象学、地球物理学和医学成像等领域。它通过绘制等值线来展示数据的变化&#xff0c;帮助用…

Flink异常:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

水库大坝安全监测险情应对措施

汛期暴雨洪涝灾害发生后&#xff0c;为保证大坝及下游人民生命财产安全&#xff0c;应及时进行大坝安全现场检查和快速评估。评估内容包括大坝沉降和水平变形、裂缝、坝坡是否塌滑、下游坡是否存在集中渗漏或大面积渗水、溢洪道启闭设备能否正常运行、近坝库岸是否有大的滑坡体…

[激光原理与应用-110]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 13 - 德擎激光焊接在线缺陷检测系统 WDD详解解析

目录 一、产品简介 1.1 概述 1.2 多光学信号传感器 &#xff08;1&#xff09;外观 &#xff08;2&#xff09;消费电子行业应用 1.3 IO信号处理模块/可编程控制模块 1.4 操作系统分析软件 1.5 检测原理分析 二、硬件原理 2.1 系统架构与电路接口 2.2 多光学信号传感…

链路聚合概述

技术背景&#xff1a; 随着网络规模不断扩大&#xff0c;人们对骨干链路的带宽吞吐量与可靠性提出了越来越高的要求。根据传统的方案&#xff0c;只能将当前链路更换为更高速的链路。但是更换链路需要付出较高的成本费用&#xff0c;而且灵活性差&#xff0c;因此我们需要探索…

ERROR: No matching distribution found for matplotlib

1.问题&#xff1a;安装matplotlib报错&#xff0c;如下图所示&#xff1a; 2.通过换源&#xff0c;输入以下命令&#xff1a;python -m pip install matplotlib -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com&#xff0c;但是还是无效 3.在pycharm中升级…

OpenHarmony 入门——ArkUI自定义组件的基础语法(一)

文章大纲 引言一、自定义组件的基本语法1、Component 装饰器 和 Entry 装饰器2、build函数3、Reuseable4、定义成员函数/变量 二、自定义组件的使用 引言 在OpenHarmony 系统里ArkUI子系统显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义…

本地服务器部署外网可访问地址

一、开放服务器端口 &#xff08;1&#xff09;打开【控制面板】-【系统和安全】-【防火墙】-【高级设置】 &#xff08;2&#xff09;右键【新建规则】-【端口】-【程序&#xff1a;所有程序】-【操作&#xff1a;允许连接】-【配置文件&#xff1a;默认】-【名称&#xff1a;…

Customize-A-Video:文生视频自由定制

视频领域&#xff0c;尤其是文本到视频&#xff08;T2V&#xff09;扩散模型中的动作定制&#xff0c;尚未得到充分研究。来自马里兰大学、Adobe Research 和延世大学的研究团队提出了一种名为“Customize-A-Video”的新方法&#xff0c;本方法通过单一参考视频对动作进行建模&…

20240713 每日AI必读资讯

&#x1f697; 烧钱抢老司机饭碗&#xff1f;“萝卜快跑”事件辟谣 - 武汉相关负责人辟谣&#xff1a;无人车不是1000辆&#xff0c;只有400多辆 - “萝卜快跑”自动驾驶车可以通过单车智能、多重安全系统冗余保障以及5G云代驾平行驾驶三重冗余保障&#xff0c;确保自动驾驶…