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

Chapter2:C#基本数据类型

参考书籍:《C#边做边学》;



2.C#基本数据类型
2.1 变量与常量
  • 变量是程序运行过程中用于存放数据的存储单元,变量的值的程序运行过程中可以改变;

  • 变量定义:

    • 定义变量时,必须给每个变量起名,通过变量名区分不同的变量;

    • 定义变量时,必须为每个变量指定数据类型,变量的类型决定了存储在变量中的数值的类型;

    • 变量定义语法格式:

      // C#变量定义语法格式:
      类型标识符 变量名1,变量名2,变量3,...;// 变量定义示例:
      int iNumber1,iNumber2;
      float fNumber1,fNumber2;
      string strName,strID;
      
    • 变量在使用前,先定义,后使用;

  • 变量赋值:

    • 变量是一个能保存某种类型的具体数据的内存单元,可以通过变量名来访问这个具体的内存单元;

    • 变量的赋值,是把数据保存到变量中的过程,变量赋值语法格式:

      // C#变量赋值语法格式:
      变量名 = 表达式;// 定义变量:
      int iNumber1, iNumber2;
      float fNumber1, fNumber2;// 赋值变量:
      iNumber1 = 100;
      iNumber2 = 200;
      fNumber1 = 1.23;
      fNumber2 = 4.56;
      
  • 变量初始化:

    • 在定义变量的同时对变量赋值,称为变量的初始化,变量初始化语法格式:

      // C#变量初始化语法格式:
      类型标识符 变量名 = 表达式;// 变量初始化:
      int iNumber1 = 100;
      float fNumber1 = 1.23;
      
  • 常量是指那些基于可读格式的固定数值,在程序的运行过程中其值不可改变的;

  • 声明常量的语法格式:

    // 声明常量的语法格式:
    const 类型标识符 变量名 = 表达式;// 声明常量示例:
    const double PI = 3.1415926;
    
  • 常量特点:

    • 程序中,常量只能被赋予初始值,赋予初始值后,常量的值在程序运行过程中不允许改变,即无法对一个常量赋值;

    • 定义常量时,表达式中的运算符对象只允许出现常量,不能有变量存在;

    • 定义常量的示例:

      // 正确定义常量与错误定义常量示例:
      int iNumber1 = 100;
      const int iNumber2 = 200;
      const int iNumber3 = iNumber2 + 100;	// 正确,iNumber2是一个常量;
      const int iNumber4 = iNumber1 + 100;	// 错误,iNumber1是一个变量;
      iNumber2 = 800;							// 错误,常量不允许修改;
      
2.2 基本数据类型转换与运算
  • 基本类型转换:把数据从一种类型转换为另一种类型,类型转换包括隐式转换和显式转换;

  • 隐式转换:隐式转换是 C # {\rm C\#} C#默认的以安全方式进行的转换,不会导致数据丢失,如:从小的整数类型转换为大的整数类型,从派生类转换为基类;

  • 显式转换:显式转换即强制类型转换,需要强制转换运算符,强制转换会造成数据丢失;

  • 隐式转换和显式转换示例:

    // CH02_01.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;// 隐式转换和显式转换示例:
    namespace CH02_01
    {class CH02_01{static void Main(string[] args){// 1.隐式转换:int类型转换为double类型;int iNumber1 = 100;double dNumber1 = iNumber1;Console.WriteLine("隐式转换示例如下:");Console.WriteLine("转换前的值为:" + iNumber1);Console.WriteLine("转换后的值为:" + dNumber1 + "\n");// 2.显式转换// double类型转int类型:double dNumber2 = 3.14;int iNumber2 = (int)dNumber2;Console.WriteLine("显式转换double类型转int类型示例:");Console.WriteLine("(double to int)转换前的值为:" + dNumber2);Console.WriteLine("(double to int)转换后的值为:" + iNumber2 + "\n");// string类型转换为其他类型:string sData1 = "584";string sData2 = "5.84";int strToInt = int.Parse(sData1);double strToDouble = double.Parse(sData2);Console.WriteLine("显式转换string类型转其他类型示例:");Console.WriteLine("(string to int)转换前的值为:" + sData1);Console.WriteLine("(string to int)转换后的值为:" + strToInt);Console.WriteLine("(string to double)转换后的值为:" + sData2);Console.WriteLine("(string to double)转换后的值为:" + strToDouble + "\n");// 其他类型转换为string类型:int iNumber3 = 584;double dNumber3 = 5.84;string intToStr = iNumber3.ToString();string doubleToStr = dNumber3.ToString();Console.WriteLine("其他类型转换为string类型示例:");Console.WriteLine("(int to string)转换前的值为:" + iNumber3);Console.WriteLine("(int to string)转换后的值为:" + intToStr);Console.WriteLine("(double to string)转换前的值为:" + dNumber3);Console.WriteLine("(double to string)转换后的值为:" + doubleToStr);}}
    }
    
  • 数据的输入与输出

    • 控制台 ( C o n s o l e ) ({\rm Console}) (Console)的输入/输出主要通过命名空间 S y s t e m {\rm System} System中的 C o n s o l e {\rm Console} Console类来实现,提供了从控制台读写字符的基本功能;
    • 控制台输入主要通过 C o n s o l e {\rm Console} Console类的 R e a d ( ) {\rm Read()} Read()方法和 R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法实现,控制台输出主要通过 C o n s o l e {\rm Console} Console类的 W r i t e ( ) {\rm Write()} Write()方法和 W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法实现;
    • R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法用来从控制台读取一行数据,一次读取一行字符的输入,且直到用户按下 E n t e r {\rm Enter} Enter键才会返回, R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法不接受回车键, R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法没有接收到任何输入,或接收了无效的输入,则 R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法返回 n u l l {\rm null} null
    • R e a d ( ) {\rm Read()} Read()方法用来从控制台的输入流读取下一个字符, R e a d ( ) {\rm Read()} Read()方法一次只能从输入流读取一个字符,且直到用户按下回车键才返回;
    • W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法是将信息输出到控制台, W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法在输出信息的后面添加一个回车换行符,用来产生一个新行;
    • W r i t e ( ) {\rm Write()} Write()方法是将信息输出到控制台, W r i t e ( ) {\rm Write()} Write()方法在输出信息到屏幕后不会产生一个新行;
2.3 项目实战1:求解圆面积和圆周长

项目需求: 提示用户输入圆的半径,计算圆的面积和圆的周长,并输出到控制台。

项目代码:

// CH02_02.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CH02_02
{class CH02_02{static void Main(string[] args){// 声明变量和常量;double circleRadius, circleArea, circleCircumference;const double PI = 3.1415926;string strInput;// 接收输入数据,转换为浮点数;Console.WriteLine("请输入圆的半径:");strInput = Console.ReadLine();circleRadius = double.Parse(strInput);// 计算圆的面积和圆的周长;circleArea = PI * circleRadius * circleRadius;circleCircumference = 2 * PI * circleRadius;// 将计算结果输出到控制台;Console.Write("圆的面积为:{0}", circleArea + "\n");Console.WriteLine("圆的周长为:" + circleCircumference);}}
}
2.4 项目实战2:求解矩形的周长和面积

项目需求: 已知三个不同矩形的长宽,求解各矩形的周长和面积,并输出到控制台。

项目代码:

// CH02_03.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CH02_03
{class CH02_03{static void Main(string[] args){// 定义不同类型的矩形的长和宽;int iRecLength = 10, iRecWidth = 20;double dblRecLength = 10.1, dblRecWidth = 20.2;float fRecLength = 10.11F, fRecWidth = 20.22F;int iRecArea, iRecCircumference;double dblRecArea, dblRecCircumference;float fRecArea, fRecCircumference;// 计算不同矩形的面积和周长;iRecArea = iRecLength * iRecWidth;iRecCircumference = 2 * (iRecLength + iRecWidth);Console.WriteLine("圆1的长为:{0},圆1的宽为:{1}", iRecLength, iRecWidth);Console.WriteLine("圆1的面积为:{0},圆1的周长为:{1}", iRecArea, iRecCircumference);Console.Write("\n");dblRecArea = dblRecLength * dblRecWidth;dblRecCircumference = 2 * (dblRecLength + dblRecWidth);Console.WriteLine("圆2的长为:{0},圆2的宽为:{1}", dblRecLength, dblRecWidth);Console.WriteLine("圆2的面积为:{0},圆2的周长为:{1}", dblRecArea, dblRecCircumference);Console.Write("\n");fRecArea = fRecLength * fRecWidth;fRecCircumference = 2 * (fRecLength + fRecWidth);Console.WriteLine("圆3的长为:{0},圆3的宽为:{1}", fRecLength, fRecWidth);Console.WriteLine("圆3的面积为:{0},圆3的周长为:{1}", fRecArea, fRecCircumference);Console.Write("\n");}}
}
2.5 项目实战3:简易计算器,计算和差积商

项目需求: 接收控制台输入,输入两个整数,计算两个整数的和、差、积、商,并输出到控制台。

项目代码:

// CH02_04.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CH02_04
{class CH02_04{static void Main(string[] args){// 定义变量;int iNumber1, iNumber2;int iSum, iDifference, iProduct, iQuotient;string strInput1, strInput2;Console.WriteLine("请输入整数1:");strInput1 = Console.ReadLine();Console.WriteLine("请输入整数2(非零):");strInput2 = Console.ReadLine();// 输入转换为整数;iNumber1 = int.Parse(strInput1);iNumber2 = int.Parse(strInput2);// 计算两个整数的和、差、积、商;iSum = iNumber1 + iNumber2;iDifference = iNumber1 - iNumber2;iProduct = iNumber1 * iNumber2;iQuotient = iNumber1 / iNumber2;// 将计算结果输出到控制台;Console.WriteLine("整数的和:" + iSum);Console.WriteLine("整数的差:" + iDifference);Console.WriteLine("整数的积:" + iProduct);Console.WriteLine("整数的商:" + iQuotient);}}
}

相关文章:

Chapter2:C#基本数据类型

参考书籍:《C#边做边学》; 2.C#基本数据类型 2.1 变量与常量 变量是程序运行过程中用于存放数据的存储单元,变量的值的程序运行过程中可以改变; 变量定义: 定义变量时,必须给每个变量起名,通过…...

kafka服务端之控制器

文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controler),它负责管理整个集群中所有分区和副本的状态。…...

Unity笔试常考

线程同步的几种方式 1.信号量pv操作 2.互斥加锁 3.条件变量 五层网络协议指的是哪五层 1.应用层 2.运输层 3.网络层 4.链路层 5.物理层 TCP和UDP区别 tcp 面向连接,保证发送顺序,速度慢,必须在线,三次握手,4次挥手…...

移植BOA服务器到GEC2440开发板

所需软件:boa-0.94.13.tar.tar(下载:http://www.boa.org/boa-0.94.13.tar.gz) 步骤: 设置好交叉编译工具链。 1、解压下载好的压缩包(tar xzvf boa-0.94.13.tar.tar),并进入解压后的目录(cd boa-0.94.13),再进行如下操作: 先进入到src目录(下面操作都是在该目录下进行…...

WPS如何接入DeepSeek(通过第三方工具)

WPS如何接入DeepSeek 一、下载并安装OfficeAI插件二、配置OfficeAI插件三、使用DeepSeek功能 本文介绍如何通过 WPS 的第三方工具调用 DeepSeek 大模型,实现自动化文本扩写、校对和翻译等功能。 一、下载并安装OfficeAI插件 1、访问OfficeAI插件下载地址&#xff…...

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…...

Windows Docker笔记-制作、加载镜像

引言 在文章《Windows Docker笔记-在容器中运行项目》中,已经在容器中运行了项目。而且在这个容器中,已经调试好了项目运行的环境。 使用docker,就是为了在项目发布到生产环境时,不用再去安装项目运行的环境,直接丢给…...

leetcode_26删除有序数组中的重复项

1. 题意 给定一个重复数组,删除其中的重复项目。 2. 题解 双指针 一个指针指向有序不重复数组的最后一个数,另外一个数遍历整个数组,若两个指针对应用的数不相同,有序数组的指针右移,将数填入。 代码一 class Sol…...

速递丨DeepSeek刚刚成立香港子公司,或因考虑香港上市和招募全球AI人才

图片来源:DeepSeek 根据彭博社和财联社报道,DeepSeek 2月5日在香港成立了两家公司——DeepSeek Limited 和 DeepSeek (HK) Limited。 香港中文大学莊太量教授表示,DeepSeek进军香港将推动该市的金融科技发展。如果DeepSeek考虑在香港上市&a…...

笔灵ai写作技术浅析(六):智能改写与续写

笔灵AI写作中的智能改写和续写技术是其核心功能之一,旨在帮助用户生成高质量、多样化的文本内容。 一、智能改写技术 1. 基本原理 智能改写的目标是在保持原文语义不变的前提下,对文本进行重新表述,生成语法正确、语义连贯且风格多样的新文本。其核心思想是通过语义理解和…...

【在线优化】【有源程序】基于遗传算法(GA)和粒子群优化(PSO)算法的MPPT控制策略

目录 一、背景 二、源程序及结果 2.1 simulink仿真程序 2.2 GA模块源程序 2.3 PSO模块源程序 三、程序运行结果 3.1 基于GA优化的MPPT 3.2 基于PSO优化的MPPT 一、背景 MPPT策略能够显著提高光伏、风电等发电效率,节省大量成本。该策略的经典算法是&#xf…...

使用 Three.js 实现热力渐变效果

大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...

java-异常家族梳理(流程图)

前言: 使用流程图梳理异常,便于理解 梳理: Throwable ├── Error(严重错误,无需捕获) │ ├── OutOfMemoryError │ ├── StackOverflowError │ └── ... ├── Exception(可捕获处理) │ ├── RuntimeException(非检查异常/Unchecked) │ …...

开启蓝耘之旅:DeepSeek R1 模型在智算平台的起步教程

----------------------------------------------------------我的个人主页-------------------- 动动你的手指----------------------------------------点赞👍 收藏❤--------------------------------------------------------------- 引言 在深度学习的广袤领…...

[高等数学]不定积分的概念与性质

一、知识点 (一)原函数与不定积分的概念 定义1(原函数) 如果在区间 I I I 上,可导函数 F ( x ) F(x) F(x) 的导函数为 f ( x ) f(x) f(x),即对任一 x ∈ I x\in I x∈I,都有 F ′ ( x )…...

【算法】【高精度】acwing算法基础 793. 高精度乘法

题目 给定两个非负整数(不含前导 0) A 和 B,请你计算 AB 的值。 输入格式 共两行,第一行包含整数 A,第二行包含整数 B。 输出格式 共一行,包含 AB 的值。 数据范围 1≤A的长度≤100000, 0≤B≤10000 输入样…...

sqlite 查看表结构

在SQLite中,查看表结构通常有以下几种方法: 使用.schema命令 在SQLite的命令行界面中,你可以使用.schema命令加上表名来查看该表的结构。例如,如果你想查看名为your_table_name的表结构,你可以这样做: .s…...

测试中的第一性原理:回归本质的质量思维革命

在软件工程领域,测试活动常被惯性思维和经验主义所主导——测试用例库无限膨胀、自动化脚本维护成本居高不下、测试策略与业务目标渐行渐远。要突破这种困境,第一性原理(First Principles Thinking)提供了独特的解题视角&#xff…...

flink判断两个事件之间有没有超时(不使用CEP)

1.为啥不使用cep呢,cep的超时时间设置不好配置化,无法满足扩展要求 2.超时怎么界定。A事件发生后,过了N时间,还没有收到B事件,算超时。 代码如下: import com.alibaba.fastjson.JSONObject; import lombo…...

二级C语言题解:十进制转其他进制、非素数求和、重复数统计

目录 一、程序填空📝 --- 十进制转其他进制 题目📃 分析🧐 二、程序修改🛠️ --- 非素数求和 题目📃 分析🧐 三、程序设计💻 --- 重复数统计 题目📃 分析🧐 前言…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...