C++ Primer笔记(五)语句
来源:互联网 发布:apache源码包下载 编辑:程序博客网 时间:2024/05/21 02:50
1、没有涉及到初始化和构造函数调用的声明并不是执行语句。
if选择语句、if...else双路选择语句、C++编译器总是把else同它之前最近的if联系起来。(最近原则)
double比float更受欢迎。
条件运算符(?:):条件表达式的值也可以是要执行的动作。
2、static_cast<double>(total)强制类型转换:并不改变原数据,只是生成它的副本。
浮点值是近似的。一般字符都是存储在char类型的变量中。
cin.get()从键盘读入一个字符,可以把它保存在变量中。
EOF:文件结束,一般取值为-1作为标记值。
最好在switch中提供default情况,每个case都可以有多条语句,在一个case句子末尾的break语句使程序控制马上退出switch语句。
3、逻辑运算符:&&与 ||或 !非 == 左值还可以用做右值,但反过来不成立。
标准库函数power(w,y)计算x的y次幂。
如果逻辑运算符用作条件,那么任何非零的值的默认含义是true,零值的默认含义是false。
4、switch中只有在最后一个case或是default语句之后才能定义变量,这样规定是为了避免代码跳过变量定义和初始化。
如switch(val)
{
case xx:
break;
case yy:
int i;//错误,该变量会在块结束之前一直存在,此后的case
//和default都可以使用i;如果语句跳过yy执行后面
//的语句则i就出现未定义就使用的情况。
break;
case zz:
i++;
break;
default:
i--;
break;
}
为了解决这种情况,可以为每个case语句添加{}花括号,引入块语句,在该块定义的变量只能在该语句块中使用。
5、do
{
cal(foo);
}while(int foo==val());此句是错误的。
也不可以以下情况:
do
{
int foo=90; //跳出{}后foo就不复存在了
}while(foo==val)
6、异常机制提供程序的错误检测与错误处理部分之间的通信。有标准库定义的一组异常类用来在throw和catch之间传递有关的错误信息。
try引入局部作用域,在{ }定义的变量不能在try块外引用。
7、要让程序所包含的代码仅在开发过程中执行,当程序完成准备交付就会将调试代码关闭。这可以使用_DEBUG和NDEBUG预处理变量来实现。
NDEBUG是在ANSI C中定义的。
int main(int argc,char**argv)
{
# ifndef NDEBUG
cerr<<"starting main"<<endl;
#endif
}
如果NDEBUG未定义程序就会将错误信息写到cerro中,如果NDEBUG已定义,程序运行时将会跳过#ifndef和#endif。
8、默认情况下NDEBUG未定义,也就意味着#ifndef,#endif之间的代码必须执行。
如果NDEBUG未定义assert断言就会被执行。如定义NDEBUG,assert将不被执行。
9、这里要将NDEBUG与vc中的_DEBUG区别开。
VC定义_DEBUG有其用途, 它控制其它宏比如 _ASSERT的行为, 但与assert 无关。
assert是ANSI C标准的断言宏,_ASSERT是VC提供的众多断言相关的宏中的一个。
虽然做Windows下开发的会注意到VC编译选项Release版都有一个NDEBUG宏, 但这个宏的引入不是微软特定的。而是在ANSI C中定义的。在vs中使用debug模式,默认情况下将定义_DEBUG。使用release模式,默认情况下将定义NDEBUG。
10、标准ANSI C还定义了其余4个在调试中非常有用的常量, 这些常量在debug和release模式下均可使用。
1)__FILE___文件名
2)__LINE__行号
3)__TIME__文件被编译时间。
4)__DATE__文件被编译的日期。
assert是在casset头文件定义的,它有点像函数调用,需要一个表达式作为它的条件,如assert(i>j),如果i>j为真,则不做任何操作,若i>j为假,assert输出信息并且终止程序的执行。在vs中微软定义了_ASSERT断言功能与assert相同。
- C++Primer笔记(五)
- 《C++Primer》读书笔记(五)语句
- C++ Primer笔记(五)语句
- c++primer学习笔记(6.0)语句
- C++Primer学习笔记(6)语句
- C++ Primer 学习笔记(五)——语句
- C++primer 阅读笔记----------语句
- c++Primer笔记(三,四,五,六,七)
- 《C++Primer 5e》学习笔记(4):语句
- 《C++Primer Plus》学习笔记(五)
- c++primer plus阅读笔记(五)
- C++Primer读书笔记(五)
- c++Primer学习笔记(5)--语句
- C++Primer笔记 第六章 语句
- C++primer学习笔记-第六章语句
- C++primer学习笔记-----5.3条件语句
- C++primer知识点(五)(终结C++primer)
- c++Primer,五,表达式
- UNlit/Transparent 不发光透明shader
- 写COM组件用于ASP/PHP等动态网页
- 多重背包O(N*V)算法详解(使用单调队列)(转)
- linux内核分析--中断的分类
- (4)Struts2之Action
- C++ Primer笔记(五)语句
- 折半查找
- http://blog.csdn.net/duanyipeng/article/details/7024897 Cursor的moveToFirst和moveToNext
- 4.0上全屏显示
- hibernate之上的schema属性
- Java:String和Date、Timestamp之间的转换
- wpa_supplicant 介绍
- 串口出问题,原来是串口线没有插紧
- cocos2dx使用第三方.so库,并且.so库生成到libs/armeabi下面