C# 与 C++,语法差别有多小-第三章 C++数据类型 第一部分
一,数据类型
C++: char int short long float double, unsigned
long double(128位,19位有效数字),
wchar_t,
浮点型文字常量在缺省情况下被认为是 double 型,单精度文字s常量 由值后面的 f 或 F 来标示,
L'a' 这称为宽字符文字 类型为 wchar_t 宽字符常量用来支持某些语言的字符集合 如汉语 日语 这些语言中的某些字符不能用单个字符来表示
C#: char int short long float double uint ulong ushort
decimal 128 位精确的十进制值,28-29 有效位,可以认为与long double类似,float 7位有效数字 double 15位 decimal 28位
sbyte 8位有符号整数
bool
byte8 位无符号整数
二、关键字
C++:
bool break case catch char class const Continue default do double else enum extern false float for goto if int long namespace new operator private protected public return short static struct switch this throw true try using virtual void volatile while sizeof
asm delete
转换 const_cast reinterpret_cast static_cast dynamic_cast
变量 unsigned register signed wchar_t auto
函数 friend inline union
运算符 typeid
宏定义 typedef
泛型 typename export (没用)
多线程 mutable
explicit :构造函数
C#:
bool break case catch char class const continue default do double else enum extern false float for goto if int long namespace new operator private protected
public return short static struct switch this throw true try using virtual void volatile while sizeof
类和函数的修饰:abstract as base delegate event interface object override sealed
变量:byte decimal null string uint ulong ushort sbyte
异常:finally fixed (基本不用) unchecked checked
循环:foreach in
多线程:lock
运算符:typeof is
转换:implicit explicit 强制显式转换
指针:stackalloc int* block = stackalloc int[100];=_alloca。unsafe
访问控制: internal ref out readonly
可变长数组:params 一.参数数组必须是一维数组 二.不允许将params修饰符与ref和out修饰符组合起来使用 三.与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量 四.若实参是数组则按引用传递,若实参是变量或表达式则按值传递 五.形式为:方法修饰符 返回类型 方法名(params 类型[ ] 变量名)六.params参数必须是参数表的最后一个参数
三、变量初始化
C++:
如果一个变量是在全 局域 global scope 内定义的 那么系统会保证给它提供初始值 0 在本例中 salary wage month day year 以及 distance 都被初始化为 0 因为它们都是在全局域内定义的 如果变 量是在局部域 local scope 内定义的 或是通过 new 表达式动态分配的 则系统不会向它 提供初始值 0 这些对象被称为是未初始化的 uninitialized 未
C#:
对于value-type的变量,默认值与value-type的默认构造函数计算的值相同。
对于reference-type的变量,默认值为null。
初始化为默认值通常通过让内存管理器或垃圾收集器在分配使用之前将内存初始化为所有位为零来完成。
因此,使用all-bits-zero来表示空引用是很方便的。
而值类型的默认值就是0
四、变量赋值
C++:
在隐式形式中 初始值被放在括号中 int ival( 1024 ); string project( "Fantasia 2001" );
C#:
没有这玩意
五:指针
C++:有
C#:没有
五、字符串:
C++:简直就是垃圾 strlen strcmp strcpy三大流氓 const char *st = "The expense of spirit\n"; string st( "The expense of spirit\n" );const char *str = s1.c_str(); /
C#:超级好用
六、Const
C++:它把一个对象转换成一个常量 constant | const double pi; // 错误: 未初始化的常量
const int value = 3;
const int* ptr = &value; ptr是指向常量的指针,不可改变内容 const int* ptr=const int(* ptr)
int* const ptr = &value;ptr是常量指针,不可改变指向 int * const ptr = int (* const ptr)
*和自己右边的部分结合
C#:
public const int C1 = 5;
readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数,如下面的代码行所示:
const修饰的常量没有内存消耗;readonly因为需要保存常量,所以有内存消耗
const只能修饰基元类型、枚举类、或者字符串类型;readonly却没有这个限制
static readonly 晕
7.static 保留节目
这个static 在C++和C#里面完全是风牛马不相及的东西
7.引用类型
C++: &符号 int ival = 1024, ival2 = 2048; int &rval = ival
C#:对象类型默认为引用类型 ,对于值类型 用ref
C# 与 C++,语法差别有多小-第三章 C++数据类型 第一部分的更多相关文章
- C# 与 C++,语法差别有多小-第二章 C++浏览
(一)动态内存分配和指针 C++:new 和 delete int *arr = new int[ 4 ]; C#:只有new,de ...
- C# 与 C++,语法差别有多小-其他2
1. 内存分配 C++:指针在堆区(new),定义在栈区 C#: 对象在堆区,值在栈区.不允许不通过new在构造对象 2.变量 C++: char 1个字节 ascii C#: char 2个字 ...
- sql 与 oracle 几个简单语法差别
sql 与 oracle 之间的 语法差别. 简单的几个函数转换 sql-> Up_Time=getdate(), isnull(), substring(), charindex(), ...
- SQL开发中容易忽视的一些小地方( 三)
原文:SQL开发中容易忽视的一些小地方( 三) 目的:这篇文章我想说说我在工作中关于in和union all 的用法. 索引定义 : 微软的SQL SERVER提供了两种索引:聚集索引(cluster ...
- 《Mysql 公司职员学习篇》 第三章 小A的疑问
第三章 小A的疑问 ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...
- Knockout应用开发指南 第三章:绑定语法(3)
原文:Knockout应用开发指南 第三章:绑定语法(3) 12 value 绑定 目的 value绑定是关联DOM元素的值到view model的属性上.主要是用在表单控件<input&g ...
- Knockout应用开发指南 第三章:绑定语法(2)
原文:Knockout应用开发指南 第三章:绑定语法(2) 7 click 绑定 目的 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用 ...
- Knockout应用开发指南 第三章:绑定语法(1)
原文:Knockout应用开发指南 第三章:绑定语法(1) 第三章所有代码都需要启用KO的ko.applyBindings(viewModel);功能,才能使代码生效,为了节约篇幅,所有例子均省略了此 ...
- 《Java程序设计》第三章-基础语法
20145221<Java程序设计>第三章-基础语法 总结 教材学习内容总结 类型.变量与运算符 类型 Java可区分为基本类型(Primitive Type)和类类型(Class Typ ...
随机推荐
- UI自动化之读取浏览器配置
以火狐浏览器为例 目录 1.找到配置项 2.读取配置 1.找到配置项 打开Firefox点右上角设置>?(帮助)>故障排除信息>显示文件夹,复制文件管理器地址栏 2.读取配置 用Fi ...
- Python 使用openpyxl导出Excel表格的时候,使用save()保存到指定路径
在使用openpyxl导出Excel表格的使用,如何指定导出的路径呢. 使用sava(filename),会保存到当前执行文件的路径下. 使用sava("/tmp/{}.xlsx" ...
- 05 使用bbed跳过归档恢复数据文件
5 使用BBED跳过归档 在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复 1 开启归档 --shutdown immediate --startup mount --alter data ...
- 3 Vue.js基础
Vue中的过滤器.钩子函数.指令.字符串填充.以及部分方法使用的案例(操作表单) <!DOCTYPE html> <html lang="en"> < ...
- 003/kubernetes基础:开启云原生之门(Mooc)
一.简介:(https://www.imooc.com/learn/978) 在2017年Kubernetes战胜了两个强大的竞争对手Swarm和Mesos,成为容器管理与调度编排领域的首选平台和事实 ...
- 数组的includes方法
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似.该方法属于 ES7 ,但 Babel 转码器已经支持. [1, 2 ...
- python+selenium文本框对象以及按钮对象操作
文本框对象 from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() # 指定和打开浏览器ur ...
- Node.js实战10:“流”是Node.js最强大的功能之一。
流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...
- Pycharm 修改项目名称后 中括号中出现先前名称怎么解决?
这时候,你打开工程的路径,会找到一个隐藏文件, .idea 目录删掉他,重新导入Pycharm 就行了. idea记录了一些工程项目信息. 步骤: 1.退出当前工程 2.打开工程路径删除.ideal ...
- [Python3 练习] 007 简单的猜数字小游戏
题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...