是什么const在"顶级"预选赛中,C平均++?
还有什么其他水平?
例如:
int const *i;
int *const i;
int const *const i;
Run Code Online (Sandbox Code Playgroud) 我听说这reinterpret_cast是实现定义,但我不知道这是什么意思.你能提供一个如何出错的例子,它出错了,使用C-Style演员会更好吗?
我知道,正确移位负签名类型取决于实现,但是如果我执行左移怎么办?例如:
int i = -1;
i << 1;
Run Code Online (Sandbox Code Playgroud)
这个定义明确吗?
我认为该标准没有说明带有签名类型的负值
如果E1具有带符号类型和非负值,并且E1×2 E2在结果类型中可表示,那么这就是结果值; 否则,行为未定义.
它只阐明如果结果在签名类型中无法表示,则行为未定义.
这是令人惊讶,我看到,即使值可以转换,一个int浮动转换始终给予警告.为什么是这样?
int i = 0;
float f = 0; // warning here
// I thought this was an implicit conversion,
// meaning it is convertible with no warnings.
f = i; // another warning here
Run Code Online (Sandbox Code Playgroud)
警告是:
warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
Run Code Online (Sandbox Code Playgroud) C++和C中的翻译单元之间有区别吗?
在其他帖子中,我读到标题和源文件构成了一个翻译单元,但是单独的源文件可以在C++中被称为翻译单元,其中它包含一个文件中的所有定义吗?
这是C++模板中的有效模板构造吗?
template < template <typename T2> class T>
void foo() {
}
Run Code Online (Sandbox Code Playgroud) 我认为动态类型意味着动态分配对象使用new.在下面的例子中,您是否p指出动态类型或静态类型的对象?在标准中,它没有说动态类型是动态对象.
1.3.3 - 由左值表达式表示的左值所指的最派生对象(1.8)的类型.[示例:如果指针(8.3.1)p的静态类型是"指向B类的指针"指向D类的对象,从B派生(第10节),则表达式*p的动态类型为"D" ".参考文献(8.3.2)的处理方式相似.]
以下引用的含义是什么呢?
rvalue表达式的动态类型是其静态类型
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}
Run Code Online (Sandbox Code Playgroud) AFAIK sizeof不会将其操作数评估为C++.
例如
int x = 0;
sizeof(x += 1); // value of x is not changed
Run Code Online (Sandbox Code Playgroud)
但是,这是什么意思?
int arr[5];
sizeof(arr+0); // here array is converted to pointer
Run Code Online (Sandbox Code Playgroud)
为什么在这里应用数组算术?
(第5.3.3/4节)左值到右值(4.1),数组到指针(4.2)和函数到指针(4.3)标准转换不应用于sizeof的操作数.
块中声明的所有变量都没有"无连接"吗?
例如:
如果我声明一个静态变量:
void foo()
{
static int i;
}
Run Code Online (Sandbox Code Playgroud)
它会有内部联系还是没有联系?如果没有联动,那为什么要让它静止?
如果我使用extern会发生什么?
/*global scope*/
static int i;
void foo()
{
extern int i;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将是什么联系i?
我读到有词法常量,词汇运算符,词汇范围等.术语"词汇"如何改变常量,例如字符串文字,任何运算符或某个标识符范围的含义?