由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 搞不清C++里的constant expression
相关主题
static initialization dependency c++ (转载)leetcode regular expression match的问题
c++最变态的是 头文件,模板,const, static 这几件事情。Q in C/C++
C++ Q29: extern and const together请教一个IT题目
C++ question*d++ = *s++
再问C++C++ Q83: 这个const_cast什么意思?
最新某公司onsite面试题[板上牛人多]问个算法题
C++: 如何对const data member做assignment?请问大牛们关于Regular expression matching
这个拷贝构造函数有什么问题?一道c++ primer的问题
相关话题的讨论汇总
话题: constant话题: expression话题: const话题: c++话题: double
进入JobHunting版参与讨论
1 (共1页)
s****A
发帖数: 80
1
找到的所有定义都说必须是整型或转化为整型的,编译时可以evaluate to constant的
表达式
那照这种定义的话 const double pi=3.1415926
这里的3.1415926肯定就不是constant expression了
可是同一本书上又说When a const is initialized by a value that is not a
constant expression, 那它的define就不应该在头文件里
照这个条件的话上面的pi的定义就不能放在头文件里了
可是看到另外一个来源里明明就说const double pi=3.1415926应该放在头文件里
因为它是被constant expression初始化的
那么,到底一个小数算不算 constant expression?
p*****2
发帖数: 21240
2
发信人: wwzz (一辈子当码工), 信区: JobHunting
标 题: Re: 请问一下关于new和delete的概念
发信站: BBS 未名空间站 (Sun Mar 3 02:54:54 2013, 美东)
快上Java 贼船。
r*********n
发帖数: 4553
3
不太明白这个题目,把3.1415926看成string literal就行了吧。
s****A
发帖数: 80
4
可是职位指定要C++啊

【在 p*****2 的大作中提到】
: 发信人: wwzz (一辈子当码工), 信区: JobHunting
: 标 题: Re: 请问一下关于new和delete的概念
: 发信站: BBS 未名空间站 (Sun Mar 3 02:54:54 2013, 美东)
: 快上Java 贼船。

s****A
发帖数: 80
5
怎么会是string literal?
不是float 或者double literal吗?
但不管如何都不是integral type的啊,所以不符合书上关于constant expression的定义

【在 r*********n 的大作中提到】
: 不太明白这个题目,把3.1415926看成string literal就行了吧。
R****d
发帖数: 27
6
a global constant by default has internal linkage, and thus can be included
in header file.
constant express is integral only.
constant expression evaluates to const. const is not necessarily constant
expression.
so
const double pi=3.14 is a constant, not a constant expression.
In a test.hpp:
const double pd =3.14;// this is ok. 3.14 is const.
class X {
static const double pd =3.14;//Line A: this is error. 3.14 is not
constant expression
static const int pi = 3; // Line B: this is ok. 3 is constant expression
}
Compiler may accept Line A, as an extison.
try compile with -std=c++0x if you use g++

【在 s****A 的大作中提到】
: 找到的所有定义都说必须是整型或转化为整型的,编译时可以evaluate to constant的
: 表达式
: 那照这种定义的话 const double pi=3.1415926
: 这里的3.1415926肯定就不是constant expression了
: 可是同一本书上又说When a const is initialized by a value that is not a
: constant expression, 那它的define就不应该在头文件里
: 照这个条件的话上面的pi的定义就不能放在头文件里了
: 可是看到另外一个来源里明明就说const double pi=3.1415926应该放在头文件里
: 因为它是被constant expression初始化的
: 那么,到底一个小数算不算 constant expression?

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道c++ primer的问题再问C++
一个基本的string问题最新某公司onsite面试题
Bloomberg 电面C++: 如何对const data member做assignment?
面试题求助这个拷贝构造函数有什么问题?
static initialization dependency c++ (转载)leetcode regular expression match的问题
c++最变态的是 头文件,模板,const, static 这几件事情。Q in C/C++
C++ Q29: extern and const together请教一个IT题目
C++ question*d++ = *s++
相关话题的讨论汇总
话题: constant话题: expression话题: const话题: c++话题: double