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);}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jetbrains IDE http客户端使用教程

简介 JetBrains IDE(如IntelliJ IDEA, WebStorm, PhpStorm和PyCharm)自带一个内置的HTTP客户端,允许直接从IDE发送HTTP请求,而无需使用第三方工具,如Postman或cURL。 JetBrains IDE 中的 HTTP…

android手机安装deepseek-r1:1.5b

序 本文主要展示一下如何在android手机上安装deepseek-r1:1.5b 步骤 安装termux 到https://termux.dev/cn/index.html去下载 然后执行termux-setup-storage以获取手机存储权限 安装构建依赖 pkg install git cmake golang下载ollama git clone --depth 1 https://gitee.…

U3D支持webgpu阅读

https://docs.unity3d.com/6000.1/Documentation/Manual/WebGPU-features.html 这里看到已经该有的差不多都有了 WOW VFX更是好东西 https://unity.com/cn/features/visual-effect-graph 这玩意儿化简了纯手搓一个特效的流程 如果按原理说就是compute shader刷position&#…

PWM波形输出

一、想要达到的效果 二、实现代码 因为是在1khz的频率下,所以用重新配置定时器0,定时长度为100微妙 void Timer0Init(void) //100微秒12.000MHz {AUXR | 0x80; //定时器时钟1T模式TMOD & 0xF0; //设置定时器模式TL0 0x50; //设置定时初值TH0 …

Spring Boot整合MQTT

MQTT是基于代理的轻量级的消息发布订阅传输协议。 1、下载安装代理 进入mosquitto下载地址:Download | Eclipse Mosquitto,进行下载,以win版本为例 下载完成后,在本地文件夹找到下载的代理安装文件 使用管理员身份打开安装 安装…

前端 CSS 动态设置样式::class、:style 等技巧详解

一、:class 动态绑定类名 v-bind:class&#xff08;缩写为 :class&#xff09;可以动态地绑定一个或多个 CSS 类名。 1. 对象语法 通过对象语法&#xff0c;可以根据条件动态切换类名。 <template><div :class"{ greenText: isActive, red-text: hasError }&…

TCP三次握手全方面详解

文章目录 (1) 三次握手各状态CLOSE状态SYN_SENT状态SYN_RECV状态ESTABLISHED状态 (2) 为什么握手时的seqnum是随机值&#xff0c;以及acknum的功能(3) 三次握手中的半连接队列&#xff08;SYN队列&#xff09;和全连接队列&#xff08;ACCEPT队列&#xff09;半连接队列全连接队…

基于Java的远程视频会议系统(源码+系统+论文)

第一章 概述 1.1 本课题的研究背景 随着人们对视频和音频信息的需求愈来愈强烈&#xff0c;追求远距离的视音频的同步交互成为新的时尚。近些年来&#xff0c;依托计算机技术、通信技术和网络条件的发展&#xff0c;集音频、视频、图像、文字、数据为一体的多媒体信息&#xff…

Docker Desktop安装到其他盘

Docker Desktop 默认安装到c盘&#xff0c;占用空间太大了&#xff0c;想给安装到其他盘&#xff0c;网上找了半天的都不对 正确安装命令&#xff1a; start /w "" "Docker Desktop Installer.exe" install --installation-dirF:\docker命令执行成功&am…

手动配置IP

手动配置IP&#xff0c;需要考虑四个配置项&#xff1a; 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址&#xff1a;格式表现为点分十进制&#xff0c;如192.168.254.1 子网掩码&#xff1a;用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…

Qt:常用控件

目录 控件概述 控件体系的发展 按钮类控件 QPushButton QRadioButton QCheckBox QToolButton 显示类控件 QLabel QLCDNumber QProgressBar QCalendarWidget 输入类控件 QLineEdit QTextEdit QComboBox QSpinBox QDateEdit & QTimeEdit QDial QSlider …

【漫话机器学习系列】087.常见的神经网络最优化算法(Common Optimizers Of Neural Nets)

常见的神经网络优化算法 1. 引言 在深度学习中&#xff0c;优化算法&#xff08;Optimizers&#xff09;用于更新神经网络的权重&#xff0c;以最小化损失函数&#xff08;Loss Function&#xff09;。一个高效的优化算法可以加速训练过程&#xff0c;并提高模型的性能和稳定…

4G核心网的演变与创新:从传统到虚拟化的跨越

4G核心网 随着移动通信技术的不断发展&#xff0c;4G核心网已经经历了从传统的硬件密集型架构到现代化、虚拟化网络架构的重大转型。这一演变不仅提升了网络的灵活性和可扩展性&#xff0c;也为未来的5G、物联网&#xff08;LOT&#xff09;和边缘计算等技术的发展奠定了基础。…

拉格朗日插值法的matlab实现

一、基本原理 比如有如下这些点 x1x2x3x4y1y2y3y4 那么在拉个朗日原理中可以把过这些点的曲线表示为&#xff1a; 其g(x)y叫做一个插值基函数&#xff08;开关&#xff09;&#xff0c;当xx1时&#xff0c;g1(x)1&#xff0c;而当xx2,x3,x4时&#xff0c;g1(x)都为0&#xf…

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦&#xff01;?? 基本配置 打包工具&#xff1a;Vite 前端框架&#xff1a;ElementPlus 开发语言&#xff1a;Vue3、TypeScript、Sass 代码检查&#xff1a;ESLint、Prettier IDE&#xff1a;WebSt…

35~37.ppt

目录 35.张秘书-《会计行业中长期人才发展规划》 题目​ 解析 36.颐和园公园&#xff08;25张PPT) 题目​ 解析 37.颐和园公园&#xff08;22张PPT) 题目 解析 35.张秘书-《会计行业中长期人才发展规划》 题目 解析 插入自定义的幻灯片&#xff1a;新建幻灯片→重用…

day44 QT核心机制

头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QLabel> //标签类头文件 #include<QPushButton> //按钮类头文件 #include<QLineEdit> //行编辑器类头文件QT_BEGIN_NAMESPACE namespace Ui { class Widget; } …

kafka服务端之副本

文章目录 概述副本剖析失效副本ISR的伸缩LWLEO与HW的关联LeaderEpoch的介入数据丢失的问题数据不一致问题Leader Epoch数据丢失数据不一致 kafka为何不支持读写分离 日志同步机制可靠性分析 概述 Kafka中采用了多副本的机制&#xff0c;这是大多数分布式系统中惯用的手法&…

[笔记] 汇编杂记(持续更新)

文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…

mysql8.0使用MHA实现高可用

一、环境配置 本实验环境共有四个节点&#xff0c; 其角色分配如下&#xff08;实验机器均为centos 7.x &#xff09; 机器名称IP配置服务角色备注manager192.168.8.145manager控制器用于监控管理master192.168.8.143数据库主服务器开启bin-log relay-log 关闭relay_logslave…