上一页 1 ··· 7 8 9 10 11 12 13 下一页
摘要: Throw表达式和try块的定义如下:1. throw 表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误。可以说,throw 引发了异常条件。 2. try 块,错误处理部分使用它来处理异常。try 语句块以 try 关键字开始,并以一个或多个 catch 子句结束。在 try 块... 阅读全文
posted @ 2014-04-15 15:23 依然冷月 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 一、隐式转换规则:a.混合类型的表达式中,其操作数被转为相同的类型b.用作条件的表达式被转为bool类型c.用一表达式初始化某个变量,或将一表达式赋值给某个变量,则该表达式被转换为该变量的类型二、显示转换(强制类型转换)1.为什么要进行强制类型转换? a.需要覆盖通常的标准转换 b.可能存在多种转换,需要选择一种特定的转换方式2.转换形式: cast-name(expression); cast-name根据情况的不同,又分为static_cast、dynamic_cast、const_cast 和 reinterpret_cast。 ◆static_cast ・编译器隐式执行的任何类型... 阅读全文
posted @ 2014-04-01 15:00 依然冷月 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1、new和delete都会用,这里只声明一点:C++ 没有明确定义如何释放指向不是用 new 分配的内存地址的指针。比如下面的代码: 1 #include 2 3 using namespace std; 4 5 int main() { 6 int i = 1; 7 int *p0 = &i; 8 int *p1 = new int(); 9 int *p2 = 0;10 11 delete p0; // Compile OK, Run Error12 delete p1; // Compile OK, Run OK13 ... 阅读全文
posted @ 2014-04-01 13:52 依然冷月 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 在C++ Primer中,有这样的一道习题:除了逻辑与和逻辑或外,C++ 没有明确定义二元操作符的求解次序,编译器可自由地提供最佳的实现方式。只能在“实现效率”和程序语言使用中“潜在的缺陷”之间寻求平衡。你认为这可以接受吗?说出你的理由。标准答案如下:可以接受,因为操作数的求解次序通常对结果没有什么影响。只有当二元操作符的两个操作数涉及同一对象,并改变该对象的值时,操作数的求解次序才会影响计算结果,后一种情况只会在部分(甚至是少数)程序中出现。在实际运用中,这种“潜在的缺陷”可以通过程序员的努力得到弥补,但“实现效率”的提高却能使所有使用该编译器的程序收益,因此利大于弊。个人理解:随着环境的不 阅读全文
posted @ 2014-04-01 11:02 依然冷月 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 在网上看到一段贪吃蛇程序,自己心痒下了下来又稍微做了一点修改。没有用面向对象的方式来进行封装,下次准备试试。需要在windows环境下进行编译 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using names... 阅读全文
posted @ 2014-03-31 17:39 依然冷月 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 先了解一下自增和自减的运算符:自增(++)和自减(--)操作符为对象提供加1或减1操作: int i = 0, j; j = ++i; // j = 1, i = 1: prefix yields incremented value j = i++; // j = 1, i = 2: postfix yields unincremented value因为前置操作返回加1后的值,所以返回对象本身,这是左值。而后置操作返回的则是右值。一个具体的例子来区分这个左值和右值: 1 #include 2 using namespace std; 3 4 void F(int a... 阅读全文
posted @ 2014-03-31 15:14 依然冷月 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 根据C++ Primer这本书上面的讲解,逗号表达式的定义如下:逗号表达式是一组由逗号分隔的表达式,这些表达式从左向右计算。逗号表达式的结果是其最右边表达式的值。如果最右边的操作数是左值,则逗号表达式的值也是左值。int main(){int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}上面的表达式中应该等价于这样的结合:(z=x++),y++,++y;如果这样写的话,则答案很清晰,为:2,3,1因为赋值运算符的优先级比逗号表达式的优先级要高一级,所以出现了上面的结果。--------------------- 阅读全文
posted @ 2014-03-31 14:16 依然冷月 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 原文出处:http://www.cnblogs.com/wenber/p/3630373.html1,创造简短的写法你可以这么写:1 var slice = Array.prototype.slice;2 slice.call(arguments); //转化成数组也可以这么写:(ie9+)1 va... 阅读全文
posted @ 2014-03-28 17:50 依然冷月 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 现在有这样一个问题:针对一个long类型的变量,我们想把它打印成为32位显示。 1 #include "stdio.h" 2 3 int main() { 4 long i =0xa; 5 6 printf("%016X\n", i); 7 printf("%016lX\n", i); 8 printf("%016llX\n", i); 9 10 return 0;11 }针对上面的3个不同输出,我们运行,可以得到下面的结果:svpm-dev# gcc practise.c -o practisesvpm-dev# 阅读全文
posted @ 2014-03-28 11:04 依然冷月 阅读(1395) 评论(0) 推荐(0) 编辑
摘要: 最开始纯粹为了好玩,写了这样一段程序:for(int i = 0; i < 10; i++);然后欢乐的运行:gcc practise.c -o practise我擦咧,出现了这个:practise.c:10: error: ‘for’ loop initial declarations are only allowed in C99 modepractise.c:10: note: use option -std=c99 or -std=gnu99 to compile your code好吧,第二行给出了答案,在for文中定义变量只有在C99标准后才支持的,古老的编译器啊。果断改之: 阅读全文
posted @ 2014-03-28 10:58 依然冷月 阅读(183) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 下一页