常量表达式 Item 1:如果函数必须在编译期进行求值,就将其声明为 理由 需要用 来告诉编译器允许对其进行编译期求值。 示例 阶乘的例子: 上例中给出了constexpr函数fac()的定义,在f()中列举了几种调用fac()的情形。在这里,编译期间能够求值的前提是fac()要为constexpr ...
分类:
其他好文 时间:
2018-08-05 14:29:45
阅读次数:
132
3.27:假设txt_size是一个无参数的函数,它的返回值是int。请回答下列哪个定义是非法的?为什么? unsigned buf_size=1024; (a)int ia[buf_size]; (b)int ia[4*7-14]; (c)int ia[txt_size()]; (d)char s ...
分类:
其他好文 时间:
2018-08-03 14:33:27
阅读次数:
152
3.30:指出下面代码中的索引错误。 constexpr size_t array_size=10; int ia[array_size]; for (size_t ix=1;ix<=array_size;++ix) ia[ix]=ix; Ans:定义的数组ia的大小是10,并且数组的下标是从0开始 ...
分类:
其他好文 时间:
2018-08-03 14:31:46
阅读次数:
209
constexpr函数是指能用于常量表达式的函数。定义constexpr函数的方法有其他函数类似,不过要遵循几项约定:函数的返回值类型及所以形参的类型都是字面值类型,而且函数体中必须有且只有一条return语句。为了能在编译过程中随时展开,constexpr函数被隐式指定地指定为内联函数。 cons ...
分类:
编程语言 时间:
2018-07-27 22:27:08
阅读次数:
212
编译器将在编译过程中把用到const变量的地方都替换成对应的值,为了执行这种替换,编译器必须知道变量的初始值。如果程序包含多个文件,则那个用了const对象的文件都必须能访问到它的初始值才行。要做到这一点,就必须在每一个用到变量的文件中都有对它的定义。为了支持这一用法,同时避免对同一变量的重复定义, ...
分类:
编程语言 时间:
2018-07-23 15:01:59
阅读次数:
180
3.5.1定义和初始化内置数组 1.维度必须是常量 constexpr unsigned x = 5; 3..5.2访问数组元素 1.在使用数组下标时,一般将下标声明为size_t 2.不能对尾指针使用解引用或者递增操作。 3.两指针相减的结果是一种类型为ptrdiff_t的标准库类型和size_t ...
分类:
编程语言 时间:
2018-05-19 17:00:40
阅读次数:
197
contexpr函数 ? [test1.cpp] ? [test2.cpp] (1)[test1.cpp] 符合constexpr函数的常规用法,即函数的返回类型以及所有的形参类型必须是字面值类型(字面值类型即编译过程就能得到结果的类型)。此时,如果将 const int x = 0; 变为 int ...
分类:
编程语言 时间:
2018-05-09 14:42:54
阅读次数:
201
constexpr函数 constexpr函数: constexpr函数是指用于常量表达式的函数,函数的返回值类型以及所有的形参类型必须是字面值,而且函数必须只有一条return语句。 分析 首先说明一下常量表达式的定义:常量表达式是指值不会改变且在编译阶段就可以得到结果的表达式。 (1)[test ...
分类:
编程语言 时间:
2018-04-22 15:59:33
阅读次数:
196
文件结束符:windows:ctrl+z unix:ctrl+d 文件重定向:程序名 < 输入文件名 > 输出文件名 如:add <input.txt> output.txt 宽字符:wchar_t 可以存放机器最大扩展字符集中的任意一个字符 Unicode字符:char16_t,char32_t ...
分类:
其他好文 时间:
2018-03-12 21:48:48
阅读次数:
217
编译期的常量表达式,顾名思义是在编译期就求值得表达式。例如: 这些都是老套的传统代码,没什么稀奇的。现在改一下代码,如下所示: 不奇怪的是,编译器识别出我的代码是傻子逻辑,因为N3是无法在编译期确定的,只能在运行期求值。 引人注意的是地方是,同样的const int 修饰的变量,却具有更隐蔽的性质。 ...
分类:
编程语言 时间:
2018-03-11 20:55:35
阅读次数:
197