C++ Variables and Basic Types Notes
1. Type conversion:
If we assign an out-of-range value to an object of unsigned type, the result is the remainder of the value modulo the number of values the target type can hold.
If we assign an out-of-range value to an object of signed type, the result is undefined.
2.What does a variable mean?
A variable provides us a named storage that our program can manipulate.
3.Variable initialization and assignment
Initialization happens when a variable is given a value when it is created, whereas assignment is to replace the old value of the variable with new value.
4.Variable declaration and definition
To support seperate compilation, C++ distinguishes declaration and definition. A declaration makes a name known to the program, especially when a program wants to use a variable that is defined in other file. The definition creates the associated entity.
To get a declaration that is not a definition, we can add the 'extern' word before variable and not provide an initial value.
P.S. Variable must be defined exactly once but can be declared many times.
5. Reference and pointer
Reference defines an alternative name for an object. A reference must be initialized. And once initialized, a reference remains bound to its initial object. There is no way to rebind a reference to a different object.
Pointer is a type that stores the address of an object. Unlike reference, a pointer needn't to be initialized when it's created. And a pointer can point to differnent object in its lifetime.
P.S. Reference is not an object. Hence, we may not have a pointer to a reference. Also, there is 'const pointer' but no 'const reference'.
6. void * pointer
The type void * is a special pointer type that can hold address of any type of object.
7. Const
We can make a variable unchangeable by defining the variable's type as const. Because we can't change the value of a const object after we create it, so we need to initialize it when creting it.
P.S. To share a const object across multiple files, you must define the variable as extern.
Const pointer: we indicate the pointer is const by putting the 'const' after '*'.
8. Auto type specifier
Under the new standard, we can let the compiler to figure out the type of an expression by using the auto type specifier. The variable using auto as its type specifier must have its initializer.
In particular, when we use the reference as the initializer, the initializer is the corresponding object. Second, auto ordinarily ignores top-level const.
9. Decltype type specifier
Sometimes we want to define a variable with the type that the compiler deduces from an expression but not want to use the expression to initialize the variable. For such case, the new standard introduce the 'decltype' specifier, which returns the type of its operand.
C++ Variables and Basic Types Notes的更多相关文章
- [C++] Variables and Basic Types
Getting Started compile C++ program source $ g++ -o prog grog1.cc run C++ program $ ./prog The libra ...
- C++Primer 5th Chap2 Variables and basic Types
wchar_t,char16_t,char32_t用于拓展字符集 char和signed char并不一样,由编译器决定类型char表现上述两种中的哪一种 一般long的大小和int无二,如果超过in ...
- TypeScript学习指南第一章--基础数据类型(Basic Types)
基础数据类型(Basic Types) 为了搭建应用程序,我们需要使用一些基础数据类型比如:numbers,strings,structures,boolean等等. 在TypeScript中除了Ja ...
- A Tour of Go Basic types
Go's basic types are bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr ...
- 编译器重复定义错误:error C2371: 'SIZE' : redefinition; different basic types
我们常常会定义自己工程用的数据类型,可能会与Windows的基本数据类型冲突. vs会报重复定义错误:error C2371: 'SIZE' : redefinition; different bas ...
- QML学习【一】Basic Types
QML入门教程(1) QML是什么? QML是一种描述性的脚本语言,文件格式以.qml结尾.语法格式非常像CSS(参考后文具体例子),但又支持javacript形式的编程控制.它结合了QtDesi ...
- [GraphQL] Use GraphQL's Object Type for Basic Types
We can create the most basic components of our GraphQL Schema using GraphQL's Object Types. These ty ...
- Kotlin Reference (四) Basic Types
most from reference 基本类型 在kotlin中,一切都是对象,我们可以在任何变量上调用成员函数和属性.一些类型可以具有特殊的内部表示:例如,数字.字符和布尔值都可以在运行时被表示为 ...
- Go xmas2020 学习笔记 00-03、Basic Types
00-02-Hello Example. 目录结构. 不一样的Hello World. 巧妙的单元测试. 传入os.Args切片. go mod init. 03-Basic Types. 变量类型与 ...
随机推荐
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
//创建一个委托,是为访问listbox控件服务的. public delegate void UpdateTxt(string msg); //定义一个委托变量 public UpdateTxt u ...
- java web 路径 --转载
主题:java(Web)中相对路径,绝对路径问题总结 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:\xyz\test.txt 代表 ...
- Rac & DG
Rac环境: RAC版本异同:[10R2,11R1(和10类似)],11R2,12c: 目录: 10.2的ASM需要单独的目录(oracle home):rdbms home,asm home, cr ...
- [转]unable to resolve superclass of 的奇怪问题和一种解决方法!
[转]unable to resolve superclass of 的奇怪问题和一种解决方法! http://blog.csdn.net/jackymvc/article/details/90015 ...
- C/C++中的可变参函数
可变参函数最好的实例:printf();参数可变 包含的头文件: C语言中:#include<stdarg.h> C++中的可变参的头文件:#include<cstdarg>, ...
- Very large tabs in eclipse panes on Ubuntu
http://stackoverflow.com/questions/11805784/very-large-tabs-in-eclipse-panes-on-ubuntu ou can edit E ...
- Interview-Harry Potter walk through matrix.
假设你是harry potter,在grid的左上角,你现在要走到右下角,grid中有正数也有负数,遇到正数表示你的strength增加那么多,遇到负数表示strength减少那么多,在任何时刻如果你 ...
- Java 8 VM GC Tunning Guide Charter 6
第六章 并行GC The Parallel Collector The parallel collector (also referred to here as the throughput coll ...
- android开发设置dialog的高宽
这里设置为跟屏幕一样的宽度,:看代码 dlg.show(); WindowManager.LayoutParams params = dlg.getWindow().getAttributes(); ...
- mysql存储过程中传decimal值会自动四舍五入,没有小数
通过 call proc(0.2,0.5); 查看结果数据库竟然是0 和 1 原因:proc的参数没有设置好 参数:原本是 in a decimal,in b decimal 应该改为:in ...