C#修炼手册
基本框架
using System;
namespace 名称
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("变量");
}
}
}
//结果输出一行"变量",并换行。Console 控制台对象,大部分操作基于此对象进行
输入输出语句
Console.Write();//输出内容,但不换行
Console.WriteLine();//输出内容,自动换行
Console.ReadKey();//读取单个输入,如1,2
Console.ReadLine();//读取一行输入变量区别(整形变量,浮点数,特殊类型)
1.整形变量
可分为 有符号的整形变量 与 无符号的整形变量
1**.1有**符号的整形变量
sbyte 范围 -128~127
int 范围 -21亿~21亿
short 范围 -32768~32767
long 范围 -9百万兆~9百万兆
1.2无符号的整形变量
byte 范围 0~255
uint 范围 0~42亿
ushort 范围 0~65535
ulong 范围 0~18百万兆
2浮点数
float数的定义后边要加上f;不加 f 默认double
float存储7/8位有效数字(编译器区别),自动四舍五入;
ps有效数字 从左往右的非0数开始算有效数字;
之所以要在小数的定义 后面加f 或 m 是因为c#中 申明的小数 默认是double类型 加f是为了使系统区分double和其他类型;
float f =1.01234567890f; //输出为1.0123457
double d = 0.12345678901234567890123456789;//输出为0.12345678901234568
decimal de = 0.123456789012345678901234567890m;//输出为0.12345678901234567890123456793特殊类型
bool true false//布尔型,表示真假的数据类型
bool bo = true;
bool bo2 = false;
char c = 'A';//字符类型,仅用来存储单个字符的变量类型
string str = "abcdefg";//字符串类型变量本质
变量的本质是 二进制(计算机中数据的本质都是二进制)
Q:为什么用二进制而不是三进制或其他?
A:因为电信号的电平变化为 高/低 电平表示 开/关 两个状态(即1/0)

变量命名规则
一,不能重名
二,不能以数字开头
三,不能用程序关键字命名(函数名除外)
四,不能有特殊符号(下划线_除外)(包括%,¥, 空格)
常量
特点:
1.必须初始化
2.初始化后不能被修改
3.常量申明就是在申明变量前面加 const
转义字符
使用方法:一般是 ** 加上 特殊标识 或 符号
1.特殊字符在字符串中的表示(\,’,”)
如:str=”12\’34”,输出为12‘34
2.制表符
如str=“h\thh”;输出为h hh(中间空了1个tab键)
3.光标退格
如str=”123\b123”;输出为12123
4.警报音
如 str=”\a”;输出为程序报错的系统音效
。。。。。。
如何取消 ** 的转义字符功能→在字符串双引号前加个@即可
类型转换
隐式转换
装→被赋值
概念:不同 变量类型 间的相互转换
有符号则类型转化 按以下规则
大装小,小不可装大
浮点数中 特殊 的是 decimal不能隐式转换
特殊类型(布尔型)不存在隐式转换
long>int>short>sbyte(无符号同顺序)
double>float>所有整形(有无符号)
decimal>所有整形(有无符号)>char
有符号 的变量不能 隐式转换 成 无符号 的(int与uint等)
无符号的变量在 满足有符号变量的范围 的前提下能转换成 有符号 的变量
浮点数 可以 装 任何类型的整数
char类型可以隐式转换为部分整形和浮点数
显示转换
位运算
1.与&
位数对齐时候直接与运算,对不齐时候在左侧补0
int a = 1;//001
int b = 5;//101
int c = a & b;//001
Console.WriteLine(c);2.或|
int a = 1;//001
int b = 5;//101
int c = a | b;//101
Console.WriteLine(c);3.异或^
int a = 1;//001
int b = 5;//101
int c = a ^ b;//100
Console.WriteLine(c);4.取反~
int a = 5;//**0**000 0000 0000 0000 0000 0000 0000 0101(4字节32位)
int c = ~a;//**1**111 1111 1111 1111 1111 1111 1111 1010(左侧的第一位是符号位,0表示正1表示负)
c 为-6
Console.WriteLine(c);
特殊的 是int类型 取反 得到的是 补码,补码=反码+1,所以是
**1**111 1111 1111 1111 1111 1111 1111 1010 - **0**000 0000 0000 0000 0000 0000 0000 0001
= **1**111 1111 1111 1111 1111 1111 1111 1001
再次取反
**0**000 0000 0000 0000 **0**000 0000 0000 0110 ——>即为6,然后由于符号位原本是1(-)所以加上负号
最终结果为 -65.左右移<<和>>
左移<<(*2)
int b = 5;//0101(5)
int c = b<<1;//01010(10)
int c = b<<2;//010100(20)
int c = b<<3;//0101000(40)
右移>>(/2)
int b = 5;//0101(5)
int c = b>>1;//0010(2)
int c = b>>2;//0001(1)
Console.WriteLine(c);