C#基础——类型转换与逻辑运算
2023-12-13 12:52:58
1、类型转换
int number = 100;
// 类型不匹配 int >>> long
long number2 = number;
Console.WriteLine(number2); //100
int longNumber1 = 500;
int number3 = longNumber1;
Console.WriteLine(number3); //500
严格意义上来说,上述的代码并不符合c#语言特性,因为类型不匹配的形况下进行了赋值
但是由于int 和 long都属于整数类型,只不过位数不同,所以系统默认进行了类型转换,
按照分类:c#中类型转换可以分为:
1.隐式类型转换
c# 默认以安全的形式进行转换,数据不会丢失,
例如从小的整数类型转换为大的整数类,从派生类转为基类
sbyte > short > int > long > float > double > decimal
2.显示类型转换
又叫做强制类型转换,需要用到转换运算符,而且强制类型转换会造成数据的丢失(大转小)
例如:在赋值前使用(int)进行强制类型转换,但是得到的结果造成了小数的丢失
double d1 = 66.66;
int number4 = (int)d1;
Console.WriteLine(number4); //66
如果字符串的内容跟值类型相关,那么可以尝试对应数据类型的转换
Parse方法代表把字符串内容转成对应类型的内容
这里打印出来的是 int 类型的123
string testStr = "123";
int intParsc = int.Parse(testStr);
Console.WriteLine(intParsc); //123
//打印当前类型
Console.WriteLine(intParsc.GetType().ToString()); //System.Int32
字符串拼接
// 获取控制台输入内容时返回的也是string类型
Console.WriteLine("请输入第一个数");
string a = Console.ReadLine(); //假设输入的是 1
Console.WriteLine("请输入第二个数");
string b = Console.ReadLine(); //假设输入的是 2
// 如果是字符串使用 + 代表的是字符串拼接
Console.WriteLine(a + b); //12
// 如果想得到的结果为 3 那么就需要先进行类型转换
Console.WriteLine(int.Parse(a) + int.Parse(b)); //3
Convert 类也提供数据转换的功能
int nNum = Convert.ToInt32(Console.ReadLine()); //假设输入5
Console.WriteLine(nNum); //5 得到的也是数字类型5
// 打印当前类型
Console.WriteLine(nNum.GetType().ToString()); //System.Int32
占位符的使用
int a = 10, b = 11, c = 12;
Console.WriteLine("第一个数:" + a + ",第二个数:" + b + ",第三个数:" + c);
//下面这两种需要注意顺序(因为是按照索引排序的)
Console.WriteLine("第一个数:{0},第二个数:{1},第三个数:{2}", a, b, c);
Console.WriteLine($"第一个数:{a},第二个数:{b},第三个数:{c}");
// 上面三行打印的结果都是 第一个数:10,第二个数:11,第三个数:12
值类型的四则运算 ( + - * / % )
int sum1 = 100;
int sum2 = 50;
// c#中支持值类型的四则运算 + - * / %
Console.WriteLine(sum1 + sum2);
Console.WriteLine(sum1 - sum2);
Console.WriteLine(sum1 * sum2);
Console.WriteLine(sum1 / sum2);
Console.WriteLine(sum1 % sum2);
自增与自减
int number5 = 1;
number5++; // 相当于 number5 = number5 + 1
number5--; // 相当于 number5 = number5 - 1
// 如果++或--放在了后面,那么在赋值的时候是先把变量的值返回,然后在++或--
int number6 = 1;
int number7 = number6++;
Console.WriteLine(number6); //2
Console.WriteLine(number7); //1
//如果 ++或-- 在变量前面,那么是先++或--,在进行赋值
int number8 = 1;
int number9 = ++number8;
Console.WriteLine(number8); //2
Console.WriteLine(number9); //2
2、逻辑运算
逻辑运算需要用到关系运算符 == > < != 主要是表达某种比较后的结果
一个 = 代表赋值 两个== 代表比较是否相等,结果以布尔值呈现
Console.WriteLine(5 == 10); // false
// != 不等运算符,主要用来验证两边不相等
Console.WriteLine(5 != 10); //true
// < 小于运算符,主要用来验证左侧是否小于右侧
Console.WriteLine(5 < 10); // true
// > 大于运算符,主要用来验证左侧是否大于右侧
Console.WriteLine(5 > 10); // false
// <= 小于运算符,主要用来验证左侧是否小于等于右侧
Console.WriteLine(5 <= 10); // true
// >= 小于运算符,主要用来验证左侧是否大于等于右侧
Console.WriteLine(5 >= 10); // false
is验证是否属于某一个类型,返回一个布尔值
Object obj = new Object();
Console.WriteLine(obj is Object); //true
&&且 ||或 ,返回一个布尔值
// &&与运算符(和),两边的条件表达式都需要为true的时候结果才是true
Console.WriteLine((6 % 2 == 0) && (1 + 1 == 3)); //false
// ||或运算符(或),两边的条件表达式有一个结果为true的时候结果就为true
Console.WriteLine((6 % 2 == 0) || (1 + 1 == 3));
位移运算(<< >>)
// 移位运算:按照计算机运位进行计算,先将值转成二进制,然后每一位应用一个
// 1进行补码,返回补码后的结果
// 14: 000 1110 -> 0001 1100
Console.WriteLine(14 << 1); //28
// 14: 000 1110 -> 0000 0111
Console.WriteLine(14 >> 1); //7
// 按位运算符
// 14: 0000 1110
// 13: 0000 1101
// 如果两个数上的对应位置上的数字都是1,那么就取1,如果是0,就取0
// 12: 0000 1100
Console.WriteLine(13 & 14);
模板字符串
// 模板字符串
// 在字符串的前面添加一个 $ 符号前缀
// 就可以在字符串内部使用 {} 的方法填充其他内容
string str1 = "world";
string str2 = "Hello " + str1;
string str3 = $"{{ Hello {str1} }}";
Console.WriteLine(str3);
// WriteLine 方法内也有一种特殊的参数传递形式
Console.WriteLine("Hello {0} {1}", "world", "!!!");
Console.WriteLine($"Hello {str1}");
转义字符
char a = '\n'; //换行
char b = '\\'; // \
char c = '\t'; // tab键
char d = '\"'; // 双引号
char e = '\''; // 单引号
Console.WriteLine("c:\\a\\b\\c");
Console.WriteLine(@"c:\\a\\b\\c"); //要想使转义字符不生效,就是用 @ 符号
输入文本
// 通过控制台向程序输入内容
// 获取的结果就是填入的值,类型是 字符串
// 输入方法会暂停代码的运行,等待用户输入才继续
string input = Console.ReadLine();
Console.WriteLine($"您输入的内容是:{input}");
文章来源:https://blog.csdn.net/qq_51810680/article/details/134873794
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!