C++基础入门教程(二):数据、变量、宏等
哎,木了个头的,这书太详细了~看得累人
前面部分太过基础了,很多语法方法的东西我也不重复记录了~
今天才看看C++涉及到数据的一些基础点吧,我把书中稍微比较有营养的部分抽离出来
1.初始化
一般情况下,我们声明和初始化变量是这样的:int iNum = 10;
其实这是延续了C语言的语法,C++还有一种语法,是这样的:int iNum(10);
其实大部分人还是习惯用第一种吧(我也是),但如果哪天我们在别人的代码里看到第二种形式,不要被吓蒙了~
2.宏定义
宏,用最粗俗,不,是最通俗的说法来解释,那就是——查找替换。
比如这样定义一个宏:#define NAME “mutou”
那么,以后我们就可以到处使用NAME这个宏,程序编译之后,其实会把所有的NAME都替换为”mutou”,这就是查找替换的概念了。
为什么要这么做呢?方便修改和维护吧,只要我们稍微把宏定义改改,比如改成这样:#define NAME “神经病啊”
那么所有使用了NAME的地方就都变了。
3.三种进制数的表示
就拿刚刚的变量来看:int iNum = 10;
大家都知道,10代表的是10。(小若:喂~爸,帮我准备好100万,我要捅死个人。)
等等,别激动~!
10代表的是十进制的10,但其实我们可以用八进制和十六进制来表示的,比如:
int iNum = 012; // 八进制
int iNum = 0XA; //十六进制
在数字前面加上0,就代表是八进制。
在数字前面加上0X,就代表是十六进制。
(注意了,是数字0,而不是字母o,不要弄错了~)
所以吖,大家不要为了装酷就在某个数字前面加上0,你所认为的007和7可不是一个数字。(小若:八进制的7和十进制的7是一样的啊!)
额,咳咳,所以大家不要为了装酷就在某个数字前加上0X,你所认为的0X7和7可不是一个数字。(小若:十六进制的7和十进制的7也是同样的!)
咳咳,总之,大家不要随便在数字前面加上0或者0X,除非你知道自己在做什么~!
4.const初探
我相信大家会经常看到const这个关键字吧?
它最基本的用法就是定义常量,比如:const int iNum = 10;
这么定义的话, 以后我们就不能给iNum赋值了,也就是说,iNum其实是一个常量(不会改变的一个值)。
另外,即使你想这么用的:const int iNum;
是不可以的,我们一定要给常量初始化~
关于const,还有更多的内容,不过,还是按照书的进度来吧,目前这一章的内容只是随便提了一下。
5.auto声明
相信大家在学习Cocos2d-x3.x版本时,经常会看到auto这个关键字。
其实这是C++11的新特性,它可以自动判断变量类型,不需要我们自己指定。
如果你熟悉lua的话,那么,可以粗俗,不,通俗地理解为local。
比如:
auto iNum = 10; 效果和 int iNum = 10; 是一样的。
auto sp = Sprite::create();和 Sprite* sp = Sprite::create();是一样的。
但,最好不要滥用,如果某些变量的类型不是十分明显的,可能用了auto反而更不利于阅读和维护了。
并且,像 int iNum = 10;这种最好不要用auto喇,得整死人的~
6.结束
接下来第四章的内容更厚…希望很快能有下次的教程…
相关推荐
-
C/C++ 宏详细解析
众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样.宏有一个很大的作用,就是自动为我们产生代码.如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换.增加). 关于宏的一些语法问题,可以在google上找到.相信我,你对于宏的了解绝对没你想象的那么多.如果你还不知道#和##,也不知道prescan,那么你肯定对宏的了解不够. 我稍微讲解下宏的一些语法问题(说语法问题似乎不妥,macro只与preproc
-
C++十六进制宏的用法详解
流行的用法:用二进制的每一位代表一种状态. 001,010,100这样就表示三种状态. 通过或|运算就可以组合各种状态. 001|010=011 001|010|100=111 通过与&运算可以去除某种状态. 111&001=110 可以定义这样的宏组合成函数的参数 #defineP10x001L//001 #defineP20x002L//010 #defineP30x004L//100 voidFunc(long){} Func(P1|P2); 可以这样判断某位是否是1 由于001与x
-
在C++中自定义宏的简单方法
可以使用宏定义没有返回值的"函数".例如: 复制代码 代码如下: #define PrintMax(a, b) \ do \ { \ int x = a, y = b; \ printf("Max: %d\n", x > y ? x : y);\ } while (0) // ... PrintMax(3, 4); 这样的"函数"与真正意义上的函数有本质的区别,因为宏是一个编译前行为,仅仅是编译前对文本进行替换.
-
C++中宏的使用问题详解
宏不遵循C++中关于范围和类型的规则.这经常导致一些微妙的或不那么微妙的问题.因此,C++提供更适合其他的C++(译注:原文为the rest of C++,当指C++除了兼容C 以外的部分)的替代品,例如内联函数.模板与名字空间. 考虑一下: #include "someheader.h" struct S { int alpha; int beta; }; 如果某人(不明智地)地写了一个叫"alpha"或"beta"的宏,那么它将不会被编译,
-
简单讲解C++的内部和外部函数以及宏的定义
C++内部函数和外部函数 函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数只能被本文件调用,而不能被其他文件调用.根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数. 内部函数 如果一个函数只能被本文件中其他函数所调用,它称为内部函数.在定义内部函数时,在函数名和函数类型的前面加static.函数首部的一般格式为: static 类型标识符 函数名(形参表); 如 static int fun(int a, int b); 内部函数又称静态(static)函数.
-
C/C++宏定义的可变参数详细解析
编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数.但是当调试解决之后,我们需要手工将这些地方删除或者注释掉.最近在看<Linux C编程一站式学习>这本书,就想到一个方法: 复制代码 代码如下: void myprintf(char* fmt, ...){}#ifdef DEBUG#define printf(fmt, args...) myprintf(fmt, ##args)#endif 调试阶段带着DEBUG调试,正式上线就可以把printf变成一个空函
-
浅析c++ 宏 #val 在unicode下的使用
#define CHECK(condition) cout<<check failed:<<#condition<<endl; 上面这句宏,当你 CHECK(myfunc()); 时,假设myfunc返回false,会输出:check failed:myfunc() 在宏中,#condition 是把参数转换为字符串,这在打印log时,可以很方便的打印出函数名称等等 这个大家可能都知道了,太小儿科了,但是,当你在unicode下用的时候,很可能会出现乱码 解决的办法是
-
Bootstrap零基础入门教程(二)
什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 本文重点给大家介绍Bootstrap零基础入门教程(二),具体详情如下所示: 过程中会频繁查阅资料的网站: http://www.
-
零基础易语言入门教程(二)之编程思路
易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序
-
一看就懂的ReactJs基础入门教程-精华版
一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了.由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单.所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具. ReactJS官网地址:http://facebook.github.io/re
-
Android 基础入门教程——开发环境搭建
现在主流的Android开发环境有: Eclipse + ADT + SDK Android Studio + SDK IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到Android Studio,当然这段过渡时间会很长,但如果你是刚学Android的话建议直接冲Android Studio着手:而且很多优秀的开源项目都是基于
-
MySQL基础入门教程之事务
目录 引言 1.事务操作 1.1 未控制事务 1.2 控制事务一 1.3 控制事务二 2.事务的四大特性 3.并发事务问题 4.事务隔离级别 总结 引言 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败. 就比如: 张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000. 这一组操作就必须在一个事务的范围内,要么都成功,要么都失败. 正常情况: 转账这个操作, 需
-
Bootstrap零基础入门教程(三)
什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的.Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品. 写到这里,这篇从零开始学Bootstrap(3)我想写以下几个内容: 1. 基于我对Bootstrap的理解,做一个小小的总结.
-
Leaflet 基础入门教程示例
目录 什么是Webgis? 什么是Leaflet? 在Vue中安装Leaflet,与其他依赖 在App.vue中使用 初始化地图 chinaProvider地图瓦片 addControls使用工具集 attribution创建自定义版权 Marker创建点 创建线 Polygon创建三角形 Popup弹窗&Tooltip提示 Geojson区域描边 总结 什么是Webgis? webGis又称之为网络地理信息系统,GIS的全名是Geographic Information System,它是在计
-
Python入门教程(二十八)Python中的JSON
JSON 是用于存储和交换数据的语法. JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本. Python 中的 JSON Python 有一个名为 json 的内置包,可用于处理 JSON 数据. 实例 导入 json 模块: import json 解析 JSON - 把 JSON 转换为 Python 若有 JSON 字符串,则可以使用 json.loads() 方法对其进行解析. 结果将是 Python 字典 实例 把 JS
-
Python入门教程(二十五)Python的作用域
目录 局部作用域 函数内部的函数 全局作用域 命名变量 Global 关键字 变量仅在创建区域内可用.这称为作用域. 局部作用域 在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用. 实例 在函数内部创建的变量在该函数内部可用: def myfunc(): x = 100 print(x) myfunc() 运行实例 100 函数内部的函数 如上例中所示,变量 x 在函数外部不可用,但对于函数内部的任何函数均可用: 实例 能够从函数内的一个函数访问局部变量: def myfun
-
Python入门教程(二十二)Python的类和对象
目录 Python 类/对象 创建类 创建对象 init() 函数 对象方法 self 参数 修改对象属性 删除对象属性 删除对象 pass 语句 Python 类/对象 Python 是一种面向对象的编程语言. Python 中的几乎所有东西都是对象,拥有属性和方法. 类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”. 创建类 如需创建类,请使用 class 关键字: 实例 使用名为 x 的属性,创建一个名为 MyClass 的类: class MyClass: x = 5 运行
随机推荐
- JavaScript中将一个值转换为字符串的方法分析[译]
- Kvmon.exe远程控制病毒清除指南
- PHP实现多服务器session共享之NFS共享的方法
- 30分钟入门Java8之默认方法和静态接口方法学习
- java实现发送手机短信
- Python基于checksum计算文件是否相同的方法
- 在.net中用CheckBoxList实现单选
- ASP.NET对IIS中的虚拟目录进行操作的代码
- asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
- JS实现模仿微博发布效果实例代码
- PHP时间和日期函数详解
- C#移除所有事件绑定的方法
- JavaScript异步编程:异步数据收集的具体方法
- js实现数组冒泡排序、快速排序原理
- 简单的Linux查找后门思路和shell脚本分享
- 速腾更换空调滤清器的图文方法
- javascript中Date format(js日期格式化)方法小结
- JavaScript获取页面中表单(form)数量的方法
- Linux Apache+MySQL+PHP
- java 设计模式之单例模式