在我正在读的一本书中,枚举常量是在数组之前介绍的。仅通过几个示例演示了数组的使用。现声明如下:
enum corvid { magpie, raven, jay, corvid_num};
char const * const bird [ corvid_num ] =
{
[raven] = "raven",
[magpie] = "magpie",
[jay] = "jay",
};
for ( unsigned i = 0; i < corvid_num ; ++i)
printf ("Corvid %u is the %s\n", i, bird[i]);
Run Code Online (Sandbox Code Playgroud)
这声明了一个新的整数类型枚举 corvid,我们知道它的四个不同值。
要点 - 枚举常量具有显式值或位置值
正如您可能已经猜到的,位置值从 0 开始,因此在我们的示例中,raven 的值为 0,magpie 的值为 1,jay 的值为 2,corvid_num 的值为 3。最后的 3 显然是我们感兴趣的 3。
问题一:
是否[magpie] = "magpie"意味着magpieth 位置指的是 value "magpie"。
问题2:
根据循环,how …
摘自李普曼的《C++ Primer》,
当我们定义一个变量时,我们应该给它一个初始值,除非我们确定在该变量用于任何其他目的之前该初始值将被覆盖。如果我们不能保证变量在被读取之前会被重置,我们应该初始化它。
如果在操作中使用未初始化的变量会发生什么?它会崩溃/代码会无法编译吗?
我在互联网上搜索了相同的答案,但有不同的“说法”。因此出现以下问题,
C 和 C++ 标准在处理未初始化变量的方式上是否有所不同?
对于类似的疑问,如何以及在哪里可以找到“官方”答案?对于业余爱好者来说查找 C 和 C++ 标准实用吗?
之间有区别吗;
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和
int main(){return 0;}
Run Code Online (Sandbox Code Playgroud)
和
int main(){
return
0;
}
Run Code Online (Sandbox Code Playgroud)
它们都可能编译为相同的可执行文件。C/C++ 编译器如何处理多余的空格和换行符,以及处理换行符的方式与 C 代码中空格的方式是否存在差异?
另外,标签怎么样?如果有的话,在代码中使用制表符而不是空格有何意义?
考虑 Lippman 的“C++ Primer”中的以下代码,
#include <iostream>
/*
* comment pairs /* */ cannot nest.
* "cannot nest" is considered source code,
* as is the rest of the program
*/
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译时,
$cl -EHsc .\Program.cc
Microsoft (R) C/C++ Optimizing Compiler Version 19.30.30706 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
Program.cc
.\Program.cc(4): error C4430: missing type specifier - int assumed. Note: C++ does not
support default-int
.\Program.cc(4): error C2146: syntax error: missing ';' before identifier …Run Code Online (Sandbox Code Playgroud)